题意 : 让你找出1到10^9中和为s的数有多少个。
思路 : 自己没想出来,看的题解,学长的题解报告
//URAL 1353 #include <iostream> #include <stdio.h> #include <string.h> using namespace std; int dp[11][83] ; int main() { int s ; memset(dp,0,sizeof(dp)) ; for(int i = 1 ; i < 10 ; i++) { dp[1][i] = 1 ; dp[i][0] = 1 ; } for(int i = 2 ; i < 10 ; i++) for(int j = 1 ; j < 82 ; j++) for(int k = 9 ; k >= 0 ; k--) if(j >= k) dp[i][j] += dp[i-1][j-k] ; while(~scanf("%d",&s)) { if(s == 1) printf("10 ") ; else printf("%d ",dp[9][s]) ; } return 0; }