100匹马驮100块石头

ゝ一纸荒年。 2022-04-13 12:52 323阅读 0赞

现在共有100 匹马和100石头,马分三种,大马,中马,小马.其中,每匹大马每次可以驮三块石头,中马可以驮两块石头,而小马两匹才能驮一块,问需要多少匹大马,中马和小马?

一般人思路:
  1. 设:大羊需要x只,中羊需要y只,小羊需要z
  2. 可得:
  3. X+y+z=100;
  4. 3x+2y+0.5z=100;
  5. 2x=3y;
  6. X=6z;
  7. Y=4z;
  8. ......

显然这样的话,答案就是不唯一,如果我们穷举的话,简直要烦到爆炸,
但是…
如果用代码解题的话,那就简单的不要不要的:

  1. let res=[]
  2. for(let i=0;i<=100;i+=2){
  3. for(let j=0;j<100-i;j++){
  4. if((0.5*i)+(2*j)+((100-i-j)*3)==100){
  5. res.push(("小:"+i+",中:"+j+",大:"+(100-i-j)))
  6. }
  7. }
  8. }

秒秒钟的事儿啊~~~
答案:

  1. 0:"小:68,中:30,大:2"
  2. 1:"小:70,中:25,大:5"
  3. 2:"小:72,中:20,大:8"
  4. 3:"小:74,中:15,大:11"
  5. 4:"小:76,中:10,大:14"
  6. 5:"小:78,中:5,大:17"
  7. 6:"小:80,中:0,大:20"

下边详解:

//小羊必须是偶数倍数的
for(let i=0;i<=100;i+=2){
let little=0.5i;//little:小羊石头 i:小羊数量
//中羊可以一个一个加
for(let j=0;j<100-i;j++){
let zhong=2
j;//zhong:中羊石头 j:中羊数量
//确定了中,小羊就知道大羊的数量了
let bignum=100-i-j;
let big=bignum*3;//big:大羊石头 bignum:大羊数量
//当石头数相加等于100,退出
if(little+zhong+big==100){
//alert(“小:”+i+”,中:”+j+”,大:”+bignum)
this.res.push((“小:”+i+”,中:”+j+”,大:”+bignum))
}
}
}

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读

    相关 100100石头

    现在共有100 匹马和100石头,马分三种,大马,中马,小马.其中,每匹大马每次可以驮三块石头,中马可以驮两块石头,而小马两匹才能驮一块,问需要多少匹大马,中马和小马?

    相关 LeetCode 100

    问题描述: 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:       1