博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:可称1~40磅的4块砝码
阅读量:4197 次
发布时间:2019-05-26

本文共 1219 字,大约阅读时间需要 4 分钟。

        法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:一位商人有一个重40磅的砝码,一天不小心将砝码摔成了四块。后来商人称得每块的重量都是整磅数,而且发现这四块碎片可以在天平上称1至40磅之间的任意重量。请问这四块碎片各重多少?
*问题分析与算法设计
        题目中给出的条件是“在天平上”,这意味着:同一砝码既可以放在天平的左侧,也可以放在天平的右侧。若规定重物只能放在天平的左侧,则当天平平衡时有:
重物重量+左侧砝码重量总和=右侧砝码重量总和
由此可得:
                 重物重量=右侧砝码重量总和-左侧砝码重量总和
    编程时只要根据以上公式,使“右侧砝码重量总和-左侧砝码重量总和”可以表示1到40之间的全部重量即可。编程中要注意的是:怎样采用一种简单的方法来表示一个砝码是在天平的左侧还是在天平的右侧,或是根本没有使用。
以下程序采用1、 -1和0分别表示上述三种情况,请注意理解。

*程序与程序注释
#include <stdio.h>
#include <math.h>
void main()
{
  int weight1,weight2,weight3,weight4,d1,d2,d3,d4,x,flag; /*flag:满足题意的标记*/
  printf("The weight is broke up as following 4 pieces:");
  for(weight1=1;weight1<=40;weight1++) /*将40分解成4份*/
  for(weight2=weight1+1;weight2<=40-weight1;weight2++)
  for(weight3=weight2+1;weight3<=40-weight1-weight2;weight3++)
      if((weight4=40-weight1-weight2-weight3)>=weight3)
      {
          for(flag=1,x=1;x<41&&flag;x++) /*判断可否称出1~40之间的全部重量*/
          for(flag=0,d1=1;d1>-2;d1--) /*将重物放在天平的左边*/
          for(d2=1;d2>-2&&!flag;d2--) /*1:砝码在天平右边*/
          for(d3=1;d3>-2&&!flag;d3--) /*0:不用该砝码*/
          for(d4=1;d4>-2&&!flag;d4--) /*-1:砝码在天平的左边*/
              if(x==weight1*d1+weight2*d2+weight3*d3+weight4*d4)
                  flag=1;
          if(flag) printf("%d %d %d %d/n",weight1,weight2,weight3,weight4);
          flag=0;
      }
}
*运行结果
The weight is broke up as following 4 pieces: 1 3 9 27

转载地址:http://nkzli.baihongyu.com/

你可能感兴趣的文章
Linux-SHELL常用命令
查看>>
Linux-网络运维基础
查看>>
Verilog编程网站学习——门电路、组合电路、时序电路
查看>>
android——学生信息显示和添加
查看>>
Android——ImageSwitcher轮流显示动画
查看>>
Android——利用手机端的文件存储和SQLite实现一个拍照图片管理系统
查看>>
图像调优1:清晰度相关参数MTF,SFR,MTF50,MTF50P 以及TVL的概念以及换算说明
查看>>
图像调优3: CCM参数的标定
查看>>
最长回文子串(Go,LeetCode)
查看>>
奏响春的序曲,「武汉的春天」让人泪目
查看>>
“抢菜大战”背后:生鲜电商的突击大考
查看>>
骁龙865+65W闪充!realme 真我X50 Pro 5G正式全球发布
查看>>
二月手机好评排行榜公布:华为第一,小米10没上榜
查看>>
英特尔展示业界首个一体封装光学以太网交换机
查看>>
年存10W+的年轻人都是怎么攒钱的
查看>>
iPhone 11全球供应紧张:何时补货未知
查看>>
小米40W无线闪充今年商用:MIX 4首发?
查看>>
5000起步没商量!vivo NEX 3S 5G手机正式发布:骁龙865+无界瀑布屏加持
查看>>
二月1500-1999元性价比排行榜:前三都是魅族手机
查看>>
疫情下的“双11”,品牌逆势增长背后的数字化变革
查看>>