排队情况

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值