poj 2506 递推+大数
发布时间:2020-12-14 02:23:21 所属栏目:大数据 来源:网络整理
导读:题意:用2*1或者2*2的砖铺2*n有多少种铺法。 思路:容易知道递推式为f[n] = 2*f[n-2]+f[n-1]。用数组表示即可。 #include cstdio#include cstring#include algorithm#include cmath#include queue#include cstdlibusing namespace std;#define clc(s,t) mems
|
题意:用2*1或者2*2的砖铺2*n有多少种铺法。 思路:容易知道递推式为f[n] = 2*f[n-2]+f[n-1]。用数组表示即可。 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstdlib>
using namespace std;
#define clc(s,t) memset(s,t,sizeof(s))
#define INF 0x3fffffff
#define N 250
int s[260][1000];
int n;
void create(){
int i,j;
clc(s,0);
s[0][0] = s[1][0] = 1;
for(i = 2;i<=250;i++){
for(j = 0;j<995;j++)
s[i][j] = s[i-1][j];
for(j = 0;j<995;j++){
s[i][j] += s[i-2][j]*2;
s[i][j+1] += s[i][j]/10;
s[i][j] %= 10;
}
}
}
void print(int s[1000]){
int i;
for(i = 995;!s[i];i--)
;
for(;i>=0;i--)
printf("%d",s[i]);
putchar('n');
}
int main(){
create();
while(scanf("%d",&n) != EOF)
print(s[n]);
return 0;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
