题海拾贝:P2347 [NOIP 1996 提高组] 砝码称重

Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

我的博客: <但凡.

我的专栏: 《编程之路》《数据结构与算法之美》《题海拾贝》《C++修炼之路》

欢迎点赞,关注!

1、题目

2、题解

cpp 复制代码
#include<iostream>
using namespace std;
const int N = 1010;
int f[N];
int u[10] = { 0,1,2,3,5,10,20 };
int k[10];
int n, m;
int ret = 0;
int main()
{
	for (int i = 1;i <= 6;i++)
	{
		cin >> k[i];
		ret += k[i] * u[i];
	}
	int sum = 0;
	f[0] = 1;//对0初始化
	for (int i = 1;i <= 6;i++)
	{
		for (int j = ret;j >= 0;j--)//因为j是价值所以说j必须是从0开始
		{
			for (int p = 0;p <= k[i] && p * u[i] <= j;p++)
			{
				f[j] = f[j]||f[j - p * u[i]];//哪个不为0就选哪个行了
			}
		}
	}
	//f表示的是从前i个挑选,能否凑成j。所以说最后得统计方案数
	//另外我们砝码必须都选,也就是必须选6个,所以这个题可以空间优化写
	for (int i = 1;i <= 1000;i++)
	{
		if (f[i]) sum++;
	}
	cout <<"Total=" <<sum << endl;
	return 0;
}
相关推荐
luj_17681 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
zmzb01032 小时前
C++课后习题训练记录Day175
开发语言·c++
啦啦啦啦啦zzzz3 小时前
工具:动态类工厂和用配置文件存储属性
c++·设计模式·工具·动态工厂
脱胎换骨-军哥3 小时前
C++ 代码规范与格式化指南
开发语言·c++·代码规范
木木子223 小时前
# 鸿蒙 ArkTS 实战:秒表 Stopwatch(示例 5)
数据结构·华为·list·harmonyos
geats人山人海4 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
漂流瓶jz5 小时前
UVA-12627 奇怪的气球膨胀 题解答案代码 算法竞赛入门经典第二版
算法·图论·递归·aoapc·算法竞赛入门经典·uva·12627
迷途之人不知返5 小时前
lambda表达式
c++
jarvisuni5 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
@三十一Y5 小时前
C++:红黑树的实现
开发语言·c++