杭电ACM 1297 Children’s Queue
来源:互联网 发布:软件源闪退怎么办 编辑:程序博客网 时间:2024/06/03 21:49
http://acm.hdu.edu.cn/showproblem.php?pid=1297
这道题是排序问题,可以用递归方法解决。
计算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。
程序如下,不过这个程序效率好低啊,杭电的oj返回的是超出时间限制。。
#include<iostream>using namespace std;int Fun(int);int main(){int n; //error 要用大数while(cin>>n){cout<<Fun(n)<<endl;}}int Fun(int n){if(n==0||n==1) return 1;if(n==2) return 2;if(n==3) return 4;return Fun(n-1)+Fun(n-2)+Fun(n-4);}
好,得了,又是大数的问题。。。。在这上面今后一定要注意。
大数相加,可以用以下模版解决。熟记模版很重要~~
//大数加法 string add(string s1,string s2){ int j,l,la,lb; string max,min; max=s1;min=s2; if(s1.length()<s2.length()) {max=s2;min=s1;} la=max.size();lb=min.size(); l=la-1; for(j=lb-1;j>=0;j--,l--) max[l] += min[j]-'0'; //用到加法运算符,全部按照asiic码表来,就会多加一次48,所以要减去ascii值为48的‘0’ for(j=la-1;j>=1;j--) if(max[j]>'9'){max[j]-=10;max[j-1]++;} if(max[0]>'9') {max[0]-=10;max='1'+max;} return max;}综上,程序可以是:
#include<iostream>#include<string> using namespace std;string add(string s1,string s2){ int j,l,la,lb; string max,min; max=s1;min=s2; if(s1.length()<s2.length()) {max=s2;min=s1;} la=max.size();lb=min.size(); l=la-1; for(j=lb-1;j>=0;j--,l--) max[l] += min[j]-'0'; for(j=la-1;j>=1;j--) if(max[j]>'9'){max[j]-=10;max[j-1]++;} if(max[0]>'9') {max[0]-=10;max='1'+max;} return max;}int main(){int n,i;string a[1001];a[0]="1";a[1]="1";a[2]="2";a[3]="4";for(i=4;i<1001;++i) a[i]=add(add(a[i-1],a[i-2]),a[i-4]); while(cin>>n) cout<<a[n]<<endl;return 0; }
原文:http://blog.csdn.net/xujinsmile/article/details/7364307
- 杭电ACM 1297 Children’s Queue
- 杭电ACM 1297 Children’s Queue
- 杭电ACM 1297 Children’s Queue
- 杭电acm 1297 Children's Queue.大数加递归
- 杭电1297-Children’s Queue
- 杭电 1297 Children’s Queue .
- 杭电1297 Children’s Queue
- ACM--Children’s Queue
- 递推—杭电1297 Children’s Queue
- 杭电 2100 Children’s Queue
- ACM HDOJ 1297 (Children’s Queue)
- 1297 Children’s Queue
- 1297 Children’s Queue
- Children’s Queue 1297
- ACM--学生排队--HDOJ 1297--Children’s Queue--大数
- hdu 1297 Children’s Queue
- HDOJ 1297:Children’s Queue
- 【HDU 1297】Children’s Queue
- 线段树基本应用——区间最值查询
- Z-Wave™ as Home Control RF Platform
- C++数组动态分配空间国外玩家最关注的韩游
- c语言宏定义的连接符##和#转字符串
- Object-c中各种数据类型之间的转换
- 杭电ACM 1297 Children’s Queue
- Kaka's Matrix Travels POJ 3422 最大费用流
- 高效 JavaScript 单元测试
- 传奇程序员John Carmack 访谈实录 (zz.is2120)
- rman 创建catalog实验及说明
- 王江民:传奇一生 (zz.is2120)
- Java学习小结
- Wireless Technology for Home Automation Can Save Energy
- 邻接表二分图匹配的模板