12球称重问题
有十二个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。
先将乒乓球分成三组:A、B、C。
A B C
A1,A2,A3,A4 B1 B2 B3 B4 C1 C2 C3 C4
1. 先是ABC三组中任意两大组称量:
结果:以A与B称量为例
a:AB平衡,则C组中有异常球。
取C1与C2称量,结果:
(1) 平衡,则坏球在C3、C4中,则取C3与C1称量,若平衡,则C4是坏球,如果失衡,则C3是坏球。
(2) 不平衡,则C1、C2中有坏球,取C1与C3称量,若平衡,则C2是坏球,如果失衡,则C1是坏球。
b:AB失衡(关键),则C组都为正常球。
先定A组(左盘)重,则取(A1,B1,C1)与(A2,A3,B2)称量
(1) 平衡,则坏球在A4,B3,B4中有坏球。则A4要么是好球,要么比好球重;B3,B4要么是好球,要么比好球轻。
则称第三次,取B3与B4,平衡则A4是坏球,如果不平衡,则轻球是坏球。
(2) 失衡,则再次假设(A1,B1,C1)比(A2,A3,B2)重,则A1,B2是坏球(注:首先有么A组中全正常,要么有重球;B组中要么正常,要么有轻球。仍然是左边重于右边,所以坏球必然在没有经过换位置的A1与B2中)。则第三次,取A1与C1称量,平衡,则B2是坏球;如果A1重,则A1是坏球。
而如果右边重于左边,则必然是经过换位置的B1,A2,A3中有坏球,B1要么是好球,要么轻于好球;A2,A3要么是好球,要么重于好球。则第三次用A2,A3称量,平衡,则B1是坏球,如果失衡,则重的是坏球。
如果B组(右盘)重,则可以用上述方法类推。
///*******************************************
在12个小球中有一个和其他不同(或轻或重),现在先拿起笔,记下哪个球重或者轻,然后继续下面的游戏<br><br><br>
<select name=one></select>
<select name=two></select>
<select name=three></select>
<select name=four></select>
<script>
var arrSel=["one","two","three","four"];//arrSel定义了要修改的下拉框
var i=0,arrData=[];//arrData中搁的是数据,每条都显示各级的数据
arrData[i++]=["(1,2,3,4)比(5,6,7,8)","请先做前面的选择","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["重","(1,2,5)比(3,6,9)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["重","重","(1)比(2)","请先做前面的选择"]
arrData[i++]=["重","重","重","1球比较重"]
arrData[i++]=["重","重","平","6球比较轻"]
arrData[i++]=["重","重","轻","2球比较重"]
arrData[i++]=["重","平","(7)比(8)","请先做前面的选择"]
arrData[i++]=["重","平","重","8球比较轻"]
arrData[i++]=["重","平","平","4球比较重"]
arrData[i++]=["重","平","轻","7球比较轻"]
arrData[i++]=["重","轻","(1)比(3)","请先做前面的选择"]
arrData[i++]=["重","轻","重","无解"]
arrData[i++]=["重","轻","平","5球比较轻"]
arrData[i++]=["重","轻","轻","3球比较重"]
arrData[i++]=["平","(9,10)比(1,11)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["平","重","(9)比(11)","请先做前面的选择"]
arrData[i++]=["平","重","重","9球比较重"]
arrData[i++]=["平","重","平","11球比较轻"]
arrData[i++]=["平","重","轻","10球比较重"]
arrData[i++]=["平","平","(1)比(12)","请先做前面的选择"]
arrData[i++]=["平","平","重","12球比较轻"]
arrData[i++]=["平","平","平","无解"]
arrData[i++]=["平","平","轻","12球比较重"]
arrData[i++]=["平","轻","(9)比(10)","请先做前面的选择"]
arrData[i++]=["平","轻","重","9球比较轻"]
arrData[i++]=["平","轻","平","11球比较重"]
arrData[i++]=["平","轻","轻","10球比较轻"]
arrData[i++]=["轻","(1,2,5)比(3,6,9)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["轻","重","(1)比(3)","请先做前面的选择"]
arrData[i++]=["轻","重","重","3球比较轻"]
arrData[i++]=["轻","重","平","5球比较重"]
arrData[i++]=["轻","重","轻","无解"]
arrData[i++]=["轻","平","(7)比(8)","请先做前面的选择"]
arrData[i++]=["轻","平","重","7球比较重"]
arrData[i++]=["轻","平","平","4球比较轻"]
arrData[i++]=["轻","平","轻","8球比较重"]
arrData[i++]=["轻","轻","(1)比(2)","请先做前面的选择"]
arrData[i++]=["轻","轻","重","2球比较轻"]
arrData[i++]=["轻","轻","平","6球比较重"]
arrData[i++]=["轻","轻","轻","1球比较轻"]
</script>
<script>
function qswhInit(num){
/******* by qiushuiwuhen(2002-5-15) ********/
var i,j,arrTemp=[];
for(i=0;i<num;i++)arrTemp[i]=document.all(arrSel[i]).options[document.all(arrSel[i]).selectedIndex].text
if(num==arrSel.length){//这里处理最后的数据。
return;
}
with(document.all(arrSel[num])){
length=0
for(i=0;i<arrData.length;i++){
for(j=0;j<num;j++)if(arrTemp[j]!=arrData[i][j])break;
if(j!=num)continue;
if(length==0||options[length-1].text!=arrData[i][num])
options[length++].text=arrData[i][num];
}
οnchange=new Function("qswhInit("+(num+1)+")");
onchange();
}
}
qswhInit(0);//初始化
</script>