首页 > 代码库 > Uva 10446
Uva 10446
UVa 10446
求(n,bcak)递归次数。自己推出来了一个式子:
其实就是这个式子,但是不知道该怎么写,怕递归写法超时。其实直接递推就好,边界条件易得C(0,back)=1、C(1,back)=1。
Reference Code:
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 typedef unsigned long long ll; 5 ll dp[61][61]={0}; 6 7 int main() 8 { 9 int n,back; 10 for(int i=0;i<=1;i++) 11 for (int j=0;j<=60;j++) 12 dp[i][j]=1; 13 for(int i=2;i<=61;i++) 14 for (int j=0;j<=60;j++){ 15 ll sum=0; 16 for(int k=1;k<=j;k++) 17 if(i-k<0) sum+=1; 18 else sum+=dp[i-k][j]; 19 dp[i][j]=sum+1; 20 } 21 int cas=1; 22 while(scanf("%d%d",&n,&back)==2) 23 { 24 if(n>60) break; 25 if(n<0) n=0; 26 cout<<"Case "<<cas++<<": "<<dp[n][back]<<endl; 27 } 28 return 0; 29 }
Reference Blog:http://knightzone.org/?p=1408
Uva 10446
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。