关闭

Vijos 1117 数的划分

标签: 划分dp
73人阅读 评论(0) 收藏 举报
分类:
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;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15696次
    • 积分:881
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:7篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论