1 条题解
-
0
C :
#include<stdio.h> int main() { int i,j,k,dp[83][30]={0},n; for(i=0;i<12;++i) dp[0][i]=1; for(i=1;i<82;++i) for(j=1;j<10;++j) for(k=0;k<10&&i-k>=0;++k) { if(dp[i-k][j-1]) dp[i][j]+=dp[i-k][j-1]; } while(~scanf("%d",&n)) { if(n==1) printf("10\n"); else printf("%d\n",dp[n][9]); } return 0; }
C++ :
#include<iostream> #include<algorithm> #include<cstring> #include<ctime> #include<cmath> #include<string> #include<cstdio> using namespace std; int dp[100][11]; void init_dp() { dp[0][1] = 1; for(int i = 1; i < 10; ++i) dp[i][1] = dp[1][i] = 1; dp[1][10] = 1; for(int i = 2; i < 10; ++i) { for(int s = 2; s <= i * 9; ++s) { for(int j = 0; j <= 9 && j < s; ++j) { dp[s][i] += dp[s-j][i-1]; } } } //for(int i = 0; i < 11; ++i) cout<<dp[i*9][i]<<"--"<<endl; } int main() { int s; init_dp(); while(~scanf("%d", &s)) { int ans = 0; for(int i = 0; i < 11; ++i) ans += dp[s][i]; printf("%d\n", ans); } return 0; }
- 1
信息
- ID
- 794
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者