NYOJ 176 整数划分(二)
来源:互联网 发布:windows系统正版 编辑:程序博客网 时间:2024/05/17 23:37
整数划分(二)
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
把一个正整数m分成n个正整数的和,有多少种分法?
例:把5分成3个正正数的和,有两种分法:
1 1 3
1 2 2
- 输入
- 第一行是一个整数T表示共有T组测试数据(T<=50)
每组测试数据都是两个正整数m,n,其中(1<=n<=m<=100),分别表示要拆分的正数和拆分的正整数的个数。 - 输出
- 输出拆分的方法的数目。
- 样例输入
25 25 3
- 样例输出
2
2
**动态规划具体思路如下,
设dp[i][j]为将i划分为j个整数的划分数。
(1) i<j为不可能出现的情况,dp[i][j]=0;
(2) 若i=j,有一种情况:i可以划分为i个1之和,dp[i][j]=1;
(3) 若i>j,可以根据划分数中是否含有1分为两类:若划分数中含有1,可以使用“截边法”将j个划分分别截去一个1,把问题转化为i-1的j-1个划分数,为dp[i-1][j-1]; 若划分中不包含1,使用“截边法”将j个划分数的最下面一个数截去,将为题转化为求i-j的j个划分数,为dp[i-j][j]。所以i>j时dp[i][j]=dp[i-1][j-1]+dp[i-j][j]。
#include <iostream>#include <cstring>using namespace std;int dp[110][110];int main(){int N;cin>>N;while(N--){int m,n,i,j;cin>>m>>n;memset(dp,0,sizeof(dp));for(i=1;i<=m;i++){for(j=1;j<=n;j++){if(j>i)dp[i][j] = 0;else if(j==i)dp[i][j] = 1;elsedp[i][j] = dp[i-1][j-1] + dp[i-j][j];}}cout<<dp[m][n]<<endl;}return 0;}
奈何我冒泡的算法如何打动你超时的心!!
0 0
- NYOJ 176 整数划分(二)
- NYOJ 176 整数划分(二)
- nyoj 176 整数划分(二)
- NYOJ 题目176整数划分(二)
- nyoj 176— 整数划分(二)
- nyoj 176 整数划分(二)【dp】
- NYOJ 176 整数划分(二)
- NYOJ 176 整数划分(二)(DP)
- NYOJ - 整数划分(二)
- nyoj整数划分(二)
- nyoj整数划分(二)
- NYOJ 整数划分(二)
- NYOJ 题目176整数划分(二)(递归)
- NYOJ 176 整数划分(二) (dp)
- nyoj 整数划分(一)(二)
- nyoj 90 176 整数划分一 二 和 nyoj 279 队花的烦恼二
- nyoj 176 整数划分(二) 279 队花的烦恼(二)
- nyoj 90 整数划分
- ubuntu下如何看我的显卡驱动是否装好了(转自 雪谦信的博客)
- i.mx6soloX开发 之 文件系统
- tjut 3560
- HTML+CSS学习笔记 (五)
- Http和Https的区别
- NYOJ 176 整数划分(二)
- 深入理解Redux:10个来自专家的Redux实践建议
- 深入理解HashMap(及hash函数的真正巧妙之处)
- MFC中的#ifndef afx_msg #define afx_msg // intentional placeholder #endif
- 【NOIP2016提高A组模拟9.2】单峰
- poj 3145 The Domino Principle(bfs)
- thinkphp nginx 404错误
- Android(5)---Toast用法总结
- 简单数据采集(http://www.sina.com.cn/)