砝码称重
来源:互联网 发布:数据挖掘工具weka教程 编辑:程序博客网 时间:2024/05/16 18:14
【问题描述】
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),用他们能称出的重量的种类数。
【输入文件】
a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个,中间有空格)。
【输出文件】
Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)。
【输入样例】
1 1 0 0 0 0
【输出样例】
TOTAL=3
【问题分析】
把问题稍做一个改动,已知a1+a2+a3+a4+a5+a6个砝码的重量w[i], w[i]∈{ 1,2,3,5,10,20} 其中砝码重量可以相等,求用这些砝码可称出的不同重量的个数。
这样一改就是经典的0/1背包问题的简化版了,求解方法完全和上面说的一样,这里就不多说了,只是要注意这个题目不是求最大载重量,是统计所有的可称出的重量的个数。
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),用他们能称出的重量的种类数。
【输入文件】
a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个,中间有空格)。
【输出文件】
Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)。
【输入样例】
1 1 0 0 0 0
【输出样例】
TOTAL=3
【问题分析】
把问题稍做一个改动,已知a1+a2+a3+a4+a5+a6个砝码的重量w[i], w[i]∈{ 1,2,3,5,10,20} 其中砝码重量可以相等,求用这些砝码可称出的不同重量的个数。
这样一改就是经典的0/1背包问题的简化版了,求解方法完全和上面说的一样,这里就不多说了,只是要注意这个题目不是求最大载重量,是统计所有的可称出的重量的个数。
#include<stdio.h>#include<string.h>int main(){ int m=0,c[10],i,j,sum=0,k,a[100]; int w[6]={1,2,3,5,10,20}; for (i=0;i<6;i++) { scanf("%d",&c[i]); sum+=(c[i]*w[i]); } memset(a,0,sizeof(a)); a[0]=1; for (i=0;i<6;i++) for (j=0;j<c[i];j++) for (k=sum;k>=w[i];k--) if (a[k-w[i]]==1&&!a[k]) { a[k]=1; m++; } printf("%d\n",m); return 0;}
0 0
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 砝码称重
- 从输入整数问题
- ubuntu中vim相关信息整理
- xcode 各种项目设置
- 二叉搜索树的后序遍历序列(算法)
- [clone]Java中的深拷贝和浅拷贝 实例解析
- 砝码称重
- 汽水瓶
- eclipse:No resource found that matches the given name 'Theme.AppCompat.Light'
- 8天学通MongoDB——索引操作(转)
- Android启动页
- 将tomcat添加到服务中
- 钱币兑换问题
- CBLAS的安装与使用
- Spring4.x整合Quartz2.x动态修改定时器时间(修正多定时器SpringBean异常)