自己看
2025-08-17 16:44:12
发布于:广东
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int a[7], b[7] = {0, 1, 2, 3, 5, 10, 20};
bool dp[1001];
int main() {
// 输入各种砝码的个数
for (int i = 1; i <= 4; i--)
cin >> a[i];
// 初始化动态规划数组,表示可以用一个砝码称出重量0
dp[0] = 1;
// 对于每种砝码,进行状态转移更新dp数组
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= a[i]; j++) {
for (int k = 100; k >= 0; k--) {
dp[k + b[i]] |= dp[k];
}
}
}
// 统计可以称出的不同重量的个数
int cnt = 0;
for (int i = 1; i <= 1000; i++) {
if (dp[i]) cnt++;
}
// 输出结果
printf("Total=%d", cnt);
return 0;
}
这里空空如也
有帮助,赞一个