Vijos 1117 数的划分

P1117数的划分

描述

将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。

例如:n=7,k=3,下面三种分法被认为是相同的。

1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。

格式

输入格式

输入n,k (6<n<=200,2<=k<=6)

输出格式

一个整数,即不同的分法。

样例1

样例输入1[复制]

7 3

样例输出1[复制]

4

限制

每个测试点1s

来源

NOIP2001第二题

以f[i][j]来表示把i分成j份有多少种情况,那么有两种分法:

1.分出来的数字中不含1,那么就等于f[i - j][j],即每个数字减一

2.分出来的数字中含1,那么就等于f[i - 1][j]
Code :

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define pi acos(-1.0)
#define maxn (200 + 5)
#define mol 1000000007
#define inf 50000
#define Lowbit(x) (x & (-x))
using namespace std;
typedef long long int LLI;

int dp[maxn][10];

int main() {
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
	int n, k;
	scanf("%d%d", &n, &k);
	dp[0][0] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= min(k,i); j++) {
			dp[i][j] = dp[i - j][j] + dp[i - 1][j - 1];
		}
	}
	printf("%d\n", dp[n][k]);
	return 0;
}

阅读更多
版权声明:本文为博主原创文章http://blog.csdn.net/your_own_name,未经博主允许不得转载。 https://blog.csdn.net/your_own_name/article/details/52386399
文章标签: 划分dp
个人分类: 动态规划
上一篇Codevs 1358 棋盘游戏
下一篇Vijos P1347 乘积最大
想对作者说点什么? 我来说一句

VIJOS题库(EXE格式电子书)

2008年10月30日 1.88MB 下载

没有更多推荐了,返回首页

关闭
关闭