求调,20分
  • 板块灌水区
  • 楼主XH1111
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/8/31 22:07
  • 上次更新2023/11/3 00:07:45
查看原帖
求调,20分
664087
XH1111楼主2023/8/31 22:07
#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:07
加载中...