求助 为什么会错???
  • 板块学术版
  • 楼主pip202513
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/16 19:54
  • 上次更新2023/11/2 20:02:17
查看原帖
求助 为什么会错???
399929
pip202513楼主2023/9/16 19:54

题目:

将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法。当 n=7, k=3 时,下面三种分法被认为是相同的:1,1,5; 1,5,1;

样例(20 4)正解 64

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,k,ans=0;
int f[205][7];

int factor(int pre,int n,int k)
{
	if(n<0||k<1) return 0;
	if(k==1&&n>=pre){
		return f[n][k]=1;
	}
	if(f[n][k]!=0) return f[n][k];
	//cout<<n<<" "<<k<<" "<<f[n][k]<<endl;
	for(int i=pre;i<=n;i++)
	{
		f[n][k]+=factor(i,n-i,k-1);
	}
	return f[n][k];
}

int main()
{
	memset(f,0,sizeof(f));
	cin>>n>>k;
	cout<<factor(1,n,k);
	/*for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=k;j++) cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
	}*/
	return 0;
}
2023/9/16 19:54
加载中...