【DP】NYOJ 176 整数划分(二)
2016-10-28 14:23
302 查看
整数划分(二)(DP)
解决问题:
把一个正整数m分成n个正整数的和,有多少种分法?
解决方法:
dp[i][j]代表: m为i,并分成j个正整数的和时的分法。
初始化: dp[i][1] = 1。
递推式:
dp[i][j] = dp[i-1][j-1] (有1的情况) + dp[i-j][j] (没有1的情况)
解决问题:
把一个正整数m分成n个正整数的和,有多少种分法?
解决方法:
dp[i][j]代表: m为i,并分成j个正整数的和时的分法。
初始化: dp[i][1] = 1。
递推式:
dp[i][j] = dp[i-1][j-1] (有1的情况) + dp[i-j][j] (没有1的情况)
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <stack> using namespace std; const int N = 105; typedef long long LL; const int INF=0x3f3f3f3f; int n,m; int dp ; //dp[i][j]代表数字为i,分成j个正整数时的方法数 void slove() { memset(dp,0,sizeof(dp)); for(int i = 1; i <= n; i++) dp[i][1] = 1; for(int i = 1; i <= n; i++) { for(int j = 2; j <= i; j++) dp[i][j] = dp[i-1][j-1]+dp[i-j][j]; } printf("%d\n",dp [m]); } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); slove(); } return 0; }
相关文章推荐
- NYOJ 279 队花的烦恼二和NYOJ 176 整数划分(二)【dp问题或递归】
- NYOJ 176 整数划分(二) (dp)
- nyoj-176 整数划分(二) dp
- NYOJ176 整数划分(二)(DP,DFS)
- nyoj 176 整数划分(二)【dp】
- NYOJ - 746 - 整数划分(四)(区间DP)
- NYOJ 176 整数划分(二)
- NYOJ-176整数划分(二)
- nyoj 90 整数划分【dp划分数】
- nyoj 571 整数划分问题(dp)
- NYOJ 176 整数划分(二)
- 【NYOJ 745】整数划分(四) (DP)
- NYOJ176整数划分(二)
- NYOJ 746 整数划分(区间DP)
- nyoj 176 整数划分(二)
- NYOJ 651 Cut the rope(DP, 经典的整数划分问题)
- NYOJ746:整数划分(四)(区间dp)
- NYOJ 176 、POJ 1664 —— m划分为n个正整数的划分个数
- nyoj 176 整数划分(二) 279 队花的烦恼(二)
- NYOJ 176 整数划分(二)