摆花问题-(DP)
程序员文章站
2022-07-07 15:47:33
...
本题是比较绕的,,留个笔记,后来复习
#include<iostream>
using namespace std;
int main(){
int dp[200][200],a[200];
int n,m;
//本题也就是经典的摆花问题,n种摆成m盆
cin >>n>>m;
for(int i=1;i<=n;i++){
cin >>a[i];
}
//dp[i][j]表示i种花摆成j盆,有几种方法
for(int i=0;i<=m;i++){
dp[i][0]=1;
}
for(int i=1;i<=n;i++){//几种花
for(int j=1;j<=m;j++){//几盆花
for(int k=j;k>=j-a[i];k--){//k用来循环不加当前这一种花的时候所需要摆放的花的种数
if(k>=0){
dp[i][j]+=dp[i-1][k]%1000007;
dp[i][j]%=1000007;
}else{
break;
}
}
}
}
cout<<dp[n][m]<<endl;
return 0;
}
上一篇: 怎么破解PS使用30天的试用期限之禁?