稍微做了些修改,基本思想一致
memset是对字节进行操作
void *memset(void *s, int ch, size_t n);
函数解释:将s中前n个字节替换为ch并返回s;作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
void *memcpy(void *dest, const void *src, int n);
由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内
#include<iostream>
//#include<string.h>
using namespace std;
int f[2000][1001];
int main()
{
int len[2000];
int n;
int flag=0;
memset(f,0,sizeof(f));
f[1][0]=1;
f[2][0]=1;
len[1]=1;
len[2]=1;
for(int i=3;i<2000;i++)
{
memcpy(f[i],f[i-1],sizeof(f[i-1]));
int mlen=len[i-1]>len[i-2]?len[i-1]:len[i-2];
for(int k=0;k<mlen;k++)
{
f[i][k]=f[i][k]+f[i-2][k];
if(f[i][k]>=10)
{
f[i][k+1]++;
f[i][k] %=10;
}
}
if( f[i][mlen] != 0 )
mlen++;
len[i] = mlen;
}
while(cin>>n)
{
for(i=len[n]-1;i>=0;i--)
cout<<f[n][i];
cout<<endl;
}
return 0;
}
转载声明:http://blog.csdn.net/zxy_snow/article/details/5993417