数的划分

题目描述:

问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5;  1,5,1;  5,1,1;   问有多少种不同的分法。

输入:

  n,k

输出:

  一个整数,即不同的分法

样例输入
7  3

样例输出
4
提示
 样例的四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
数据规模和约定

6<=n<=200,2<=k<=6

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	int n,k;
	int a[7][201];
	cin>>n>>k;
	memset(a,0,sizeof(a));
	for(int i=0;i<=n;i++)
	{
		a[1][i]=1;
	}
	for(int i=1;i<=k;i++)
	{
		for(int j=0;j<=n-k;j++)
		{
			if(j>=i)
			a[i][j]=a[i-1][j]+a[i][j-i];
			else
			a[i][j]=a[i-1][j];
		}
	}
	cout<<a[k][n-k];
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/reticent_man/article/details/80784066