Ural 1353 Milliard Vasya's Function(DP)
2017-06-04 08:00
429 查看
题目地址:Ural 1353
定义dp[i][j]。表示当前位数为i位时,各位数和为j的个数。
对于第i位数来说。总能够看成在前i-1位后面加上一个0~9。所以状态转移方程就非常easy出来了:
dp[i][j]=dp[i][j]+dp[i][j-1]+dp[i][j-2]+.......+dp[i][j-9];
最后统计就可以。
代码例如以下:
定义dp[i][j]。表示当前位数为i位时,各位数和为j的个数。
对于第i位数来说。总能够看成在前i-1位后面加上一个0~9。所以状态转移方程就非常easy出来了:
dp[i][j]=dp[i][j]+dp[i][j-1]+dp[i][j-2]+.......+dp[i][j-9];
最后统计就可以。
代码例如以下:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map> #include <set> #include <algorithm> using namespace std; const int INF=0x3f3f3f3f; #define LL long long int dp[10][90]; int main() { int n, i, j, sum, s, k; memset(dp,0,sizeof(dp)); for(i=1;i<=9;i++) dp[1][i]=1; for(i=2;i<=9;i++) { s=0; for(j=1;j<=81;j++) { for(k=0;k<j&&k<=9;k++) { dp[i][j]+=dp[i-1][j-k]; } } } while(scanf("%d",&n)!=EOF) { if(n==1) { puts("10"); continue ; } sum=0; for(i=1;i<=9;i++) { sum+=dp[i] ; } printf("%d\n",sum); } return 0; }
相关文章推荐
- URAL 1353 Milliard Vasya's Function(DP)
- URAL 1353. Milliard Vasya's Function(dp)
- URAL 1353 Milliard Vasya's Function(DP)
- ural 1353. Milliard Vasya's Function
- URAL1353---Milliard Vasya's Function(简单数位dp)
- Ural 1353 Milliard Vasya's Function(DP)
- Ural 1353. Milliard Vasya's Function 暴搜
- ural 1353. Milliard Vasya's Function(dp)
- ural 1353. Milliard Vasya's Function
- ural 1353. Milliard Vasya's Function
- URAL 1353 Milliard Vasya's Function(DP)
- Ural1353-Milliard Vasya's Function
- URAL1353——DP——Milliard Vasya's Function
- Milliard Vasya's Function(Ural_1353)
- 递推DP URAL 1353 Milliard Vasya's Function
- Timus 1353. Milliard Vasya's Function
- Mondriaan's Dream(DP-之状态压缩的动态规划poj2411)
- poj 2411/hdu 1400 Mondriaan's Dream 状态压缩dp
- hdu 3576 Elevators in Jiayuan Students' Apartment(DP)
- 【DP_树形DP专辑】【9月9最新更新】【from zeroclock's blog】