poj 3181 把n 划分成 不大于m的若干数字 最大的划分方法 (dp +大数)
2014-03-04 14:06
267 查看
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int dp[1002][26]; int n,k; int main() { while(scanf("%d%d",&n,&k)>0) { memset(dp,0,sizeof(dp)); //dp[1][25]=1; dp[0][25]=1; for(int i=1; i<=k; i++) for(int j=i; j<=n; j++) { for(int m=25; m>=0; m--) { dp[j][m]+=dp[j-i][m]; if(dp[j][m]>=10000) { dp[j][m-1]+=dp[j][m]/10000; dp[j][m]=dp[j][m]%10000; } } } int i=0; while(dp [i]==0) i++; printf("%d",dp [i]); i++; for(; i<=25; i++) printf("%04d",dp [i]); printf("\n"); } return 0; }
相关文章推荐
- POJ 3181 Dollar Dayz (有点像背包的dp -- JAVA大数)
- POJ 3252 Round Numbers(数位dp,区间中二进制表示时0的个数大于等于1的个数的数字的个数)
- poj 3181 数钱dp + 特殊技巧解决大数加法
- poj 1050 To the Max dp 最大子矩阵
- poj 1163/3176 数字三角形【简单DP】
- POJ 2479 + POJ 2593(DP 最大双子序列 ^_^)
- POJ 3616 Milking Time(基础DP,最大上升子序列和变形)
- POJ 2479 Maximum sum (DP&双最大子段和)
- 给一个整数数组,对数组中的每个整数中的所有数字按照升序排列(如101排序后为011)请写一个方法,输出排序后的数组中的最大数。 例如有一个数组: 101、132、375,排序后11、123、357,
- poj 2479 dp Maximum sum求两段连续不重叠子段的最大和
- POJ 3181 Dollar Dayz【递推 拆分存大数】
- 【简单DP】POJ 1050 最大子矩阵
- Poj 1050 To the Max (最大子矩阵 DP)
- poj 3181 Dollar Dayz 钱币兑换问题 大数/高精度 完全背包
- 数字划分类 dp
- POJ 3186 Treats for the Cows(区间DP)【区间最大值模板】
- 动态规划问题-DP 最大子段和O(n)解决方法
- Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
- dp处理大数整除6的最大位数Divide by Six
- zznu 1255 数字统计(数位DP, 数学方法)