HDU-1297-Children’s Queue

Posted 1625--h

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU-1297-Children’s Queue相关的知识,希望对你有一定的参考价值。

Children’s Queue

这道题是排序问题,可以用递归方法解决。

计算F(n):

一:当最后一个是男孩M时候,前面n-1个随便排出来,只要符合规则就可以,即是F(n-1);

二:当最后一个是女孩F时候,第n-1个肯定是女孩F,这时候又有两种情况:

        1)前面n-2个可以按n-2个的时候的规则来,完全可以,即是F(n-2);

        2)但是即使前面n-2个人不是合法的队列,加上两个女生也有可能是合法的。当第n-2是女孩而n-3是男孩的情况,可能合法,情况总数为F(n-4);

综上所述:总数F(n)=F(n-1)+F(n-2)+F(n-4);并且,F(0)=1,F(1)=1,F(2)=2,F(3)=4。

 1 #include<iostream>
 2 #include<string> 
 3 using namespace std;
 4 string add(string s1,string s2)
 5 {
 6     
 7     int j,l,la,lb;
 8     string max,min;
 9     max=s1;min=s2;
10     if(s1.length()<s2.length()) {max=s2;min=s1;}
11     la=max.size();lb=min.size();
12     l=la-1;
13     for(j=lb-1;j>=0;j--,l--) max[l] += min[j]-0; 
14     for(j=la-1;j>=1;j--) if(max[j]>9){max[j]-=10;max[j-1]++;}
15     if(max[0]>9) {max[0]-=10;max=1+max;}
16     return max;
17 }
18 int main(){
19     int n,i;
20     string a[1001];
21     a[0]="1";
22     a[1]="1";
23     a[2]="2";
24     a[3]="4";
25     for(i=4;i<1001;++i)
26        a[i]=add(add(a[i-1],a[i-2]),a[i-4]);
27      while(scanf("%d",&n)!=EOF)
28         cout<<a[n]<<endl;
29     return 0;      
30 }

 

以上是关于HDU-1297-Children’s Queue的主要内容,如果未能解决你的问题,请参考以下文章

HDU-1297-Children’s Queue

TYUT-A2专题题解

async+队列queue.Queue()

Python - queue

springamqp 动态 Exchange Queue Failed to check/redeclare auto-delete queue(s).

(递推 大整数) Children’s Queue hdu1297