问题描述:

有10箱产品每箱有1000件,正品每件100克。其中的几箱是次品,次品每件比正品轻10克,问能否用秤只称一次,就找出哪几箱是次品。

算法解析 :

        将10个箱子分别编号,1号箱取2^0件(1件),2号箱取2^1件(2件),3号箱取2^2件(4件),4号箱取2^3件(8件)……,10号箱取2^9件(512件),以此类推。然后分别用变量w1存放理想的总重量,w2存放实际称得的总重量。利用w1-w2计算求得差值,通过差值来求得是几号箱是次品(若是次品则整个箱子里的1000件都为次品)。

例如:

  • 轻10克1号箱为次品。(因为仅有1号箱取出一件,一件次品与正品的质量差为10g)

  • 轻20克2号箱为次品。(仅有2号箱是取出两件,而不能是一号箱和2号箱各一件,因为2号箱若有次品,则全部都为次品,不能为一正品一次品)

  • 轻30克1,2号箱为次品。

  • 轻40克3号箱为次品。

  • 轻50克1,3号箱为次品

依次类推(可以参照二进制的想法,比如50g差值,就是5件为次品,而5的二进制表示为 00000 00101 ,则1、3号箱为次品,而本题的解题思路就是类比到二进制。同理若差值为60g,则6的二进制为 00000 00110,则3、2号箱为次品)

#include <bits/stdc++.h>
using namespace std;
int main(){int n;//用于输入箱子数量cout<<"输入箱子数量:";cin>>n;long w1 = 0; //用于存放理想总重量long w2 = 0; //用于存放实际称得重量int t = 1;//求出总件数for(int i=0;i<n;i++){w1 = w1 + t;cout<<i+1<<"号箱取出:"<<t<<"件"<<endl;t = t * 2;}//将总件数乘100g求出总的理想重量w1 = w1 * 100;cout<<"理想总重量为:"<<w1<<"g"<<endl;cout<<"请输入实际称得重量:";cin>>w2;//计算与实际重量差值w1 = w1 - w2;//求得次品件数w1 = w1 / 10;//求次品箱号while(w1>0){int k=0;int t=1;//计算最接近当前件数w1的2^k,则k+1号箱为次品箱while(w1-t>=0){t = t * 2;++k;}w1 = w1 - t/2;cout<<k<<"号箱是次品"<<endl;}return 0;
}

算法——称重一次求出次品箱数相关推荐

  1. Google面试题原理解析 12个乒乓球其中有1个次品,用天平称重3次找出

    1. 题目 "在12个小球里有一个次品,重量与其他11个球不同.用一个没有砝码的天平,称3次,保证找到那个次品,并且区分出次品是轻还是重呢?" 这个问题看似简单,做起来还真不容易. ...

  2. 机器学习与深度学习——通过knn算法分类鸢尾花数据集iris求出错误率并进行可视化

    什么是knn算法? KNN算法是一种基于实例的机器学习算法,其全称为K-最近邻算法(K-Nearest Neighbors Algorithm).它是一种简单但非常有效的分类和回归算法. 该算法的基本 ...

  3. 【弗洛伊得算法的改良(可以求出具体的路径)】

    对弗洛很得算法进行了一点改动:在二维数组中存储更多信息,即具体的路径. n=int(input()) inf=float('inf')dp=[] for i in range(n):dp.append ...

  4. c语言中什么运算符可以求出数据字节数,C语言的数据类型及其运算符

    一.数据类型 (一).变量与常量 1.变量 (1).定义:其值在其作用域内可以改变的量称为变量.一个变量应该有一个名字,在内存中占据一一定的存储空间.变量在使用前必须要定义,每个变量都有自己的地址.变 ...

  5. 12球称重C语言算法,12小球称重问题

    题目: 已知有12个小球,一样的形状和外观,其中有一个是次品,现在给你一个无砝码的天平,称三次, 把这个次品找出来,并且求出这个次品相对真品是偏重还是偏轻? 解答: 首先把小球分成三堆,每堆四个. A ...

  6. 12个乒乓球称重问题

    问题: 有12个乒乓球,其中有一个次品,不知道轻重,用一台无砝码天平称三次,找出次品并告知轻重,怎么称? 解答: 先分3组,每组4个,随便拿两组来称第一次: 情况1:天平平衡, 则在剩下的4个球里,从 ...

  7. python小球方案问题_十二个小球称重问题及其Python实现

    一.问题描述 在12个外观完全相同的小球中,有一个与其它球重量不同.如何只用一架天平找到这个球并判断它比其它球轻还是重?最少需要称几次?39个球呢? 二.问题分析 这是一个很经典的信息论问题,最开始的 ...

  8. 十二个小球称重问题及其Python实现

    一.问题描述   在12个外观完全相同的小球中,有一个与其它球重量不同.如何只用一架天平找到这个球并判断它比其它球轻还是重?最少需要称几次?39个球呢? 二.问题分析   这是一个很经典的信息论问题, ...

  9. 生鲜蔬菜生产称重管理系统

    近几年来生鲜蔬菜行业在互联网应用中也是飞速发展,不少企业为此也是想破了头脑.手动配货耗时耗力增了不少人力成本.如果有一款软件能够自己分配产品以及称重工位或通道那就优美多了. 为此我专门研发了这款称重系 ...

最新文章

  1. python-pcl官网 应用、特征、过滤Filter教程翻译
  2. 【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线
  3. boost::alignment_of相关的测试程序
  4. linux修改java内存大小_Linux 和 windows修改java虚拟机内存大小
  5. c++ 字符串连接_C语言字符串操作总结大全(超详细)
  6. [18/11/23]面向对象和面向过程
  7. 迭代器模式(Iterator)解析例子
  8. 数据挖掘:概念与技术(第三版)之第八章的学习记录
  9. 苹果6能解掉id锁吗_iPhone进水保修吗?苹果官方正式回应了
  10. rtl驱动 ubuntu 禁用_ubuntu18.04系统中使用dkms安装wifi驱动rtl8723be的方法
  11. 债券收益率预测模型_基于时间序列模型的可转换债券收益率的实证研究
  12. Windows 自动连接wifi的bat批处理脚本
  13. 个人信息保护建设实践方法的探索过程
  14. MySQL LIMIT 理解
  15. 8则使用的Linux Shell命令
  16. 基于UEFI的BIOS怎么识别不同设备(SataHdd、SataCdrom、USB、BMC)
  17. leaflet加载天地图DataServer
  18. 开发才1天,为什么测试需要2天
  19. 应对恶意网站 IE常见的故障解决办法
  20. 商显市场谁主沉浮 液晶拼接屏独占鳌头

热门文章

  1. MIT 计算机操作环境导论Missing Semester Lesson 6 Git 版本控制(Git)
  2. Android之OkDownload里面的OKHttp提示java.lang.IllegalArgumentException: Invalid URL port: “image“
  3. 1026 - 浙江普通高等学校招生全国统一考试2017B 信息技术
  4. Dell G7 7588 双硬盘 UEFI启动模式 安装Ubuntu18.04双系统(已有Win10系统)
  5. 数字中国:智慧城市中的的大格局与大视野
  6. Android 系统 cpu0 目录查看 CPU 频率freq和策略policy
  7. AutoCAD 的单位问题
  8. 周报1_20230707
  9. 浏览器扩展程序插件兼容谷歌、360浏览器
  10. 下载的文档打不开是什么鬼