1215: 排队情况
时间限制: 1 Sec 内存限制: 128 MB题目描述
有n个人组成的队列,队列中不能有出现女生单独排的情况有多少种?
例如4个人,可组成以下合法情况
FFFF, FFFM, MFFF, FFMM, MFFM, MMFF, MMMM
F是女生M是男生
这种情况一共有7种
输入
多组测试数据,每组一个n代表人数(1<=n<=1000)
输出
每组测试数据输出合法情况数。
样例输入
1
2
3
样例输出
1
2
4
递推找规律 fn=fn-1+fn-2+fn-4;
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 #define len 100000000 6 int a[1001][1000]; 7 int main() 8 { 9 memset(a,0,sizeof(a)); 10 int i,j,c,n; 11 a[1][0]=1; 12 a[2][0]=2; 13 a[3][0]=4; 14 a[4][0]=7; 15 for(i=5;i<1001;i++) 16 { 17 c=0; 18 for(j=0;j<1000;j++) 19 { 20 a[i][j]=(a[i-2][j]+a[i-1][j]+a[i-4][j]+c)%len; 21 c=(a[i-2][j]+a[i-1][j]+a[i-4][j]+c)/len; 22 } 23 } 24 while(cin>>n) 25 { 26 for(i=999;i>=0;i--) 27 if(a[n][i]!=0) 28 break; 29 cout<<a[n][i--]; 30 for(;i>=0;i--) 31 printf("%08d",a[n][i]); 32 cout<<endl; 33 } 34 }