2022
作者:
blossomsym
,
2023-06-05 15:40:42
,
所有人可见
,
阅读 176
问题描述:
将2022拆分成10个互不相同的正整数之和,总共有多少种拆分方法?不同顺序为一种
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2030;
ll dp[N][15][N];//dp[i][j][k]表示从前i个物品中选择j个物品,物体的总体积为k
int main(){
//该题可以转换为:从2022个物品中选择10个物品,并且物品总体积为2022
//其中2022个正整数转换为2022个物品,每个物品的编号为值,当前物品的体积也为该值
for(int i=0;i<N;i++){
dp[i][0][0]=1;
}
for(int i=1;i<=2022;i++){
for(int j=1;j<=10;j++){
for(int k=1;k<=2022;k++){
//情况1
//如果没有选择第i个物品,那么当前的方案数就是前i-1个物品中选j
dp[i][j][k]=dp[i-1][j][k];
if(i<=k){//情况2
dp[i][j][k]+=dp[i-1][j-1][k-i];
}
}
}
}
cout<<dp[2022][10][2022]<<endl;
return 0;
}