20分求调
查看原帖
20分求调
664087
XH1111楼主2023/8/31 22:01
#include<bits/stdc++.h>
using namespace std;
long long n,k,f[10000][10000];//f[i][j]:将i分成最大不超过j的方案数 
int main(){ 
	cin>>n>>k;
	if(k==1){
		cout<<1;
		return 0;
	}
	if(k==2){
		cout<<n/2;
		return 0;
	}
	for(long long i=2;i<=n+1;i++)
		for(long long j=2;j<=k+1;j++){
			if(i==2&&j==2) f[i][j]=1;
			else if(i==j) f[i][j]=1+f[i][j-1];
			else if(i<j) f[i][j]=f[i][j-1];
			else f[i][j]=f[i-j][j]+f[i][j-1];
		}
	cout<<f[n][k]-4<<endl;
	return 0;
} 
2023/8/31 22:01
加载中...