码迷,mamicode.com
首页 > 编程语言 > 详细

算法训练 数的划分

时间:2017-03-17 14:14:53      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:end   space   std   int   logs   训练   pac   cin   page   

http://lx.lanqiao.cn/problem.page?gpid=T84

dp[i][j] 将i分成j份的方法数
不考虑顺序,则要么包含1 要么不含1
dp[i-j][j] j份每个都给1 在把剩下的i-j分成j份 则不会再出现1

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
const int inf=1e9;
const int N=2e2+20;
int n,k;
int dp[N][N];//
int main()
{
	while(cin>>n>>k)
	{
		memset(dp,0,sizeof(dp));
		for(int i=1;i<=n;i++)
			dp[i][1]=1;
		dp[0][0]=1;
		for(int i=2;i<=n;i++)
		{
			for(int j=1;j<=min(i,k);j++)
			{
				dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
			}
		}
		cout<<dp[n][k]<<endl;
	}
	return 0;
}

  

算法训练 数的划分

标签:end   space   std   int   logs   训练   pac   cin   page   

原文地址:http://www.cnblogs.com/HIKARI1149/p/6565742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!