排队情况

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 }
原文地址:https://www.cnblogs.com/a1225234/p/4676465.html