• 砝码称重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 } 
  • 相关阅读:
    2019 SDN上机第5次作业
    iOS 多线程
    安装pygame
    五分钟学会ios反编译
    反编译ipa包
    Flutter 混合开发(一)
    iOS开发-block异步实现return
    Mac下Anaconda的安装和使用
    挣值分析
    【PMP】挣值分析
  • 原文地址:https://www.cnblogs.com/CXCXCXC/p/4906806.html
Copyright © 2020-2023  润新知