!-- Loading 底层遮罩 -->

P1077 摆花

传送门

思路

dp[i][ j] = dp[i-1][ j] + dp[i-1][ j-1] + …… + dp[i-1][ j-min(ai , j)]。比较陌生的状态转移,求解当前状态需要循环,同时初始化需要多加注意。 

代码

#include<iostream>
#define MAXN 1000007
using namespace std;
int n, m, dp[110][110], a[110];
int main(void)
{
    dp[0][0] = 1;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= m; j++)
        {
            for (int k = 0; k <= min(a[i], j); k++)
            {
                dp[i][j] = (dp[i][j] + dp[i - 1][j - k]) % MAXN;
            }
        }
    }
    cout << dp[n][m];
    return 0;
}
 

 

posted @ 2022-03-30 20:29  Thinker-X  阅读(25)  评论(0)    收藏  举报