• 砝码称重V2


    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=100,000),要求:计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。

    输入
    一行,包括六个正整数a1,a2,a3,a4,a5,a6,表示1g砝码有a1个,2g砝码有a2个,……,20g砝码有a6个。相邻两个整数之间用单个空格隔开。
    输出
    以“Total=N”的形式输出,其中N为可以称出的不同重量的个数。
    样例输入
    1 1 0 0 0 0
    样例输出
    Total=3
    提示
          样例给出的砝码可以称出1g,2g,3g三种不同的重量。
      
      转化成多重背包类型的就可以了
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[10];
     4 int h[10];
     5 bool f[200000];
     6 int ans;
     7 int sum;
     8 int main(){
     9     a[1]=1; a[2]=2; a[3]=3; a[4]=5; a[5]=10; a[6]=20;
    10     for(int i=1;i<=6;i++) scanf("%d",&h[i]),sum+=a[i]*h[i];
    11     f[0]=true;
    12     for(int i=1;i<=6;i++){
    13         for(int v=sum;v>0;v--){
    14             for(int k=0;k<=h[i];k++){
    15                 if(k*a[i]<=v&&f[v-k*a[i]]==true){
    16                     f[v]=true;
    17                 }
    18             }
    19         }
    20     }
    21     for(int i=1;i<=sum;i++){
    22         if(f[i]==true) ans++;
    23     }
    24     cout<<"Total="<<ans;
    25     return 0;
    26 } 
  • 相关阅读:
    设计模式
    刷新所有视图存储过程
    js杨辉三角控制台输出
    2018申请淘宝客AppKey
    w3c标准 dom对象 事件冒泡和事件捕获
    promise原理
    vue virtual Dom
    css学习
    seo优化
    新概念学习
  • 原文地址:https://www.cnblogs.com/CXCXCXC/p/4906806.html
Copyright © 2020-2023  润新知