/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-04-01 22:54:46
* @LastEditTime: 2022-04-02 10:47:53
*/
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6;
int num[N];
int w[6] = {1, 2, 3, 5, 10, 20};
int dp[N];
int m,sum,cnt;
void read()
{
for(int i = 0;i < 6;i ++){
int k;
cin >> k;
for(int j = 1;j <= k;j ++)
num[++cnt] = w[i];
}
}
void solve()
{
for(int i = 1;i <= cnt;i ++){
sum += num[i];
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
read();
solve();
// cout << m << endl;
dp[0] = 1;
for(int i = 1;i <= cnt;i ++){
for(int j = sum;j >= num[i];j --)
dp[j] += dp[j - num[i]];
}
int ans = 0;
for(int i = 1;i <= sum;i ++)
if(dp[i])
ans ++;
cout << "Total=" << ans << endl;
}
P2347 [NOIP1996 提高组] 砝码称重
最新推荐文章于 2024-07-20 19:37:33 发布
本文介绍了一道来自NOIP1996提高组的题目——使用砝码称重。博主通过递归和动态规划的方法详细解析了如何利用给定的五种重量(1, 2, 3, 5, 10)的砝码来确定可以精确称出从1到某整数范围内任意重量的方案数量。
摘要由CSDN通过智能技术生成