稍微做了些修改,基本思想一致
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