Description
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),
Input
输入方式:a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)
Output
输出方式:Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
Sample Input
1 1 0 0 0 0 (注:下划线表示空格)
Sample Output
TOTAL=3 表示可以称出1g,2g,3g三种不同的重量
#include <stdio.h>
#include <string.h>
#define MAXN 1005
int dp[MAXN], buf[MAXN];
int famar[6] = {1, 2, 3, 5, 10, 20};
void Generation(int n[], int length, int maxValue)
{
int i, j, k;
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for(i = 0; i < length; i++) //表示表达式的个数
{
memset(buf, 0, sizeof(buf));
for(j = 0; j <= n[i] * famar[i]; j += famar[i])
{
for(k = 0; k + j <= maxValue; k++)
buf[j + k] += dp[k];
}
for(j = 0; j <= maxValue; j++)
dp[j] = buf[j];
}
}
int main()
{
int n[6];
int i, max_value, cnt;
while(scanf("%d%d%d%d%d%d", &n[0], &n[1], &n[2], &n[3], &n[4], &n[5]) != EOF)
{
max_value = 1000;
cnt = 0;
Generation(n, 6, max_value);
for(i = 1; i <= max_value; i++)
{
if(dp[i] != 0)
cnt++;
}
printf("TOTAL=%d\n", cnt);
}
return 0;
}
分享到:
相关推荐
[砝码称重问题]给定一架天平,要求用m个砝码称出1~n克范围内的所有物品的重量 ,问应该如何选择砝码~
算法设计的实验报告,关于砝码称重,有需要的小伙伴,可以拿去,写的很详细,代码,算法时间复杂度什么的都有.doc
第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 题目PDF压缩包 第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 题目PDF压缩包 第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 题目PDF压缩包
在ACM(国际大学生程序设计竞赛)中,搜索算法是解决问题的关键工具之一,尤其是在面对复杂的图论问题、游戏策略和组合优化问题时。本篇将深入解析几种常用的搜索算法,帮助你更好地理解和应用它们。...
### 天平称重,砝码组合 #### 知识点概述 本篇文章将围绕“天平称重,砝码组合”这一主题展开讨论。在实际应用中,我们需要使用尽可能少的砝码来准确地测量出不同的重量。本文将探讨如何通过特定的砝码组合来实现...
在这个压缩包中,我们有四个与动态规划相关的经典问题文档:mod 4 最优路径问题、城市交通、乘积最大和砝码称重。下面将对这些题目进行详细介绍。 1. **mod 4 最优路径问题**: 这个问题可能涉及到在网格或图中...
《算法设计模板》这篇实验报告主要探讨了如何利用动态规划解决砝码称重问题。这是一个典型的组合优化问题,涉及到算法设计和分析的重要概念。以下是详细的知识点解析: 1. **砝码称重问题**:给定一组不同重量的...
砝码称重问题的解决思路是:根据输入的砝码信息,每种砝码可用的最大个数是确定的,而且每种砝码的个数是连续的,能取 0 到最大个数,所以符合枚举法的两个条件,可以使用枚举法。枚举时,重量可以由 1g,2g,…,20g ...
例如,当解决砝码称重问题时,对于每种重量的砝码,我们可以从0个到最多允许的个数进行枚举,然后计算总重量,通过数组记录已出现的重量,以避免重复计数。 枚举法的优点在于其直观性和易理解性。由于它是问题的...
本章节中提到的几个典型问题,包括砝码称重、装箱问题、采药、开心的金明和竞赛总分,都是动态规划算法应用的实例。下面将详细介绍这些问题及其对应的动态规划解决策略。 1. 砝码称重问题:这是一个经典的多重背包...
标题 "fama.rar_fama" 暗示我们面临一个与砝码称重相关的编程问题。这个问题描述中提到,我们要使用权重为1, 2, 5, 10, 20, 50的砝码来称量1到88之间的所有重量。这其实是一个经典的动态规划或递归问题,常见于...
本例题使用枚举法来解决砝码称重问题,枚举对象是 6 种重量的砝码,范围为每种砝码的个数。判定时,只需判断这次得到的重量是新得到的,还是前一次已经得到的,即判重。 本资源提供了基础算法枚举递推和递归的详细...
枚举法的应用非常广泛,例如在砝码称重问题中,可以使用枚举法来求出不同的重量个数。 六、例题分析 例如,在砝码称重问题中,需要用不同的砝码组合来称出不同的重量。枚举时,重量可以由1g,2g,…,20g砝码中的任何...
第二个问题涉及利用砝码称重的组合问题。我们需要考虑如何通过1克、2克和4克的砝码称出不同重量。这个问题可以通过列举所有可能的组合来解答,但也可以通过二进制系统理解。每个砝码可以视为一个位,如果使用则为1,...
砝码称重问题是信息学竞赛中常见的问题,它是一个组合优化问题,要求参赛者找出一组砝码能够称出的所有不同重量。这不仅需要对组合数学有深入的理解,同时也需要应用动态规划的策略来高效地解决问题。在给定一定范围...
##### 例题2:砝码称重 **题目描述**:假设有一组不同重量的砝码(1g、2g、3g、5g、10g、20g),每种砝码数量不限,要求计算使用这些砝码可以称出的不同重量的总数,但不能使用任何砝码。 **穷举算法实现**: 1. ...
第一个问题是用不同重量的砝码称重的组合方式。例如,有1克、2克、3克和4克的砝码各一枚,可以用母函数(1+x)(1+x^2)(1+x^3)(1+x^4)来表示所有可能的重量组合。展开这个多项式后,每个x的指数表示可能的重量,系数则...
砝码称重问题是算法研究中的一个经典案例,它的核心在于使用不同的算法来解决相同的称重问题,并分析每种算法的特点及其适用场景。砝码称重问题可以简单描述为:给定一组砝码,每种砝码都有其特定的重量,目标是找出...
课堂作业和思维训练则设计了一系列相关问题,如颜色搭配、选拔方法、铅笔选择和砝码称重,这些都是生活中的实际情境,让学生在解决这些问题的过程中深化对组合概念的理解。 总的来说,这份教案通过丰富的实践活动和...