社区讨论

简单DP,蒟蒻求调

P2347[NOIP 1996 提高组] 砝码称重参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo2t2w29
此快照首次捕获于
2023/10/23 19:19
2 年前
此快照最后确认于
2023/10/23 19:19
2 年前
查看原帖

如果枚举每一个可以组成的重量a,如果 dp[j-a]为1,则dp[j]也设为1,res++

CPP
#include <iostream>

using namespace std;
int type[] = {0, 1, 2, 3, 5, 10, 20};
int total[10];
int sum;
int res;
int dp[1105];
int main()
{
    for (int i = 1; i <= 6; i++)
    {
        cin >> total[i];
        sum += total[i] * type[i];
    }
    dp[0] = 1;
    for (int i = 1; i <= 6; i++)
    {
        for (int j = sum; j >= 0; j--)
        {
            if (dp[j])
            {
                continue;
            }
            else
            {
                for (int k = 1; k <= total[i]; k++)
                {
                    if (dp[j - type[i] * k] && j - type[i] * k >= 0 && dp[j] == 0)
                    {
                        dp[j] = 1;
                        res++;
                    }
                }
            }
        }
    }
    cout << "Total=" << res << endl;
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...