30pts求助!
查看原帖
30pts求助!
1517143
Psy_Chen楼主2024/11/1 20:08

仅通过 1 3 4;其余全部WA

#include<bits/stdc++.h>
#define MAXSIZE 105
using namespace std;
int dp[MAXSIZE][MAXSIZE]={'0'};
int flo[MAXSIZE]={'0'};

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>flo[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            dp[i][j]=dp[i-1][j]+((j<=flo[i])?1:0);//若当前摆放数小于等于ai,则有全部放置i种花的可能,且应继承前面花盆j朵花的情况
                for(int k=1;k<=flo[i];k++){//状态转移
                if(j>k && i>=2) dp[i][j]+=dp[i-1][j-k]; //如果j大于k,则摆放方式为拼接
            }
        }
    }
    cout<<dp[n][m]<<endl;
    return 0;
}
2024/11/1 20:08
加载中...