声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1733|回复: 6

[共享资源] 一个有趣的数学问题和相应的Matlab算法

[复制链接]
发表于 2006-11-23 18:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一个稍稍有点难度的趣味数学问题:
有十二个外观一模一样的小球,其中有一个球的重量与其余小球质量不同(不知是比其它球大还是小),其余十一个球重量相等,现在用一个没有砝码的天平来寻找这个与众不同的小球,只能称三次。
大家最好能够先自己想想,经过自己的思考突然间想出来了的那种快乐我觉得是无与伦比的,希望大家能够享受到这种快乐。

我用我想出来的方法编了一个程序,大家先在1到12之间随便输入一个数,那么编号为这个数的球就与其它球的重量不同了(是大还是小是随机的),然后程序就可以马上找出来这个球。

  1. for i=1:12;
  2.     a(i)=1;
  3. end
  4. j=input('Which number is different?>');
  5. a(j)=rand(1)*2;
  6. b1=a(1)+a(2)+a(3)+a(4);
  7. b2=a(5)+a(6)+a(7)+a(8);
  8. if b1==b2
  9.     if a(9)==a(10)
  10.         if a(1)==a(11)
  11.             diff=12;
  12.         elseif a(1)==a(12)
  13.             diff=11;
  14.         end
  15.     elseif a(1)==a(9)
  16.         diff=10;
  17.     elseif a(1)==a(10)
  18.         diff=9;
  19.     end
  20. elseif b1>b2
  21.     b3=a(1)+a(2)+a(5)+a(6);
  22.     b4=a(7)+a(9)+a(10)+a(11);
  23.     if b3>b4
  24.         if a(1)==a(2)
  25.             diff=7;
  26.         elseif a(1)>a(2)
  27.             diff=1;
  28.         else diff=2;
  29.         end
  30.     elseif b3<b4
  31.         if a(5)==a(9)
  32.             diff=6;
  33.         else diff=5;
  34.         end
  35.     elseif b3==b4
  36.         if a(3)==a(4)
  37.             diff=8;
  38.         elseif a(3)>a(4)
  39.             diff=3;
  40.         elseif a(3)<a(4)
  41.             diff=4;
  42.         end
  43.     end
  44. elseif b1<b2
  45.     b3=a(1)+a(2)+a(5)+a(6);
  46.     b4=a(7)+a(9)+a(10)+a(11);
  47.     if b3<b4
  48.         if a(1)==a(2)
  49.             diff=7;
  50.         elseif a(1)<a(2)
  51.             diff=1;
  52.         else diff=2;
  53.         end
  54.     elseif b3>b4
  55.         if a(5)==a(9)
  56.             diff=6;
  57.         else diff=5;
  58.         end
  59.     elseif b3==b4
  60.         if a(3)==a(4)
  61.             diff=8;
  62.         elseif a(3)<a(4)
  63.             diff=3;
  64.         elseif a(3)>a(4)
  65.             diff=4;
  66.         end
  67.     end
  68. end
  69. diff
复制代码

[ 本帖最后由 suffer 于 2006-12-9 09:37 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2006-11-25 10:58 | 显示全部楼层
不错,不过程序完全可以做优化,呵呵
 楼主| 发表于 2006-11-28 21:56 | 显示全部楼层
我编的这个程序主要就是想尽量能体现那个识别方法,没有怎么考虑优化的问题
程序挺简单的,主要是先要把方法想出来
发表于 2006-11-29 09:15 | 显示全部楼层
原帖由 jt1937 于 2006-11-28 21:56 发表
我编的这个程序主要就是想尽量能体现那个识别方法,没有怎么考虑优化的问题
程序挺简单的,主要是先要把方法想出来


nod,这个问题很久之前就见过
发表于 2006-11-30 16:51 | 显示全部楼层
原帖由 jt1937 于 2006-11-23 18:03 发表
一个稍稍有点难度的趣味数学问题:
有十二个外观一模一样的小球,其中有一个球的重量与其余小球质量不同(不知是比其它球大还是小),其余十一个球重量相等,现在用一个没有砝码的天平来寻找这个与众不同的小球, ...



确实可以再做优化,程序我还没想清楚,谢谢楼主
发表于 2006-12-6 14:38 | 显示全部楼层

it is a good question

this is a good question


rand four<==> four
if ==
select the left four
...
elseif left>right
...
else
...
end
发表于 2006-12-9 01:47 | 显示全部楼层
先睹为快!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 06:48 , Processed in 0.071497 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表