设有12个小球。其中11个小球的重量相同,称为好球;有一个小球的重量与11个好球的重量不同(或轻或重),称这个小球为坏球。试编写一个算法,用一个无砝码的天平称三次找出这个坏球,并确定其比好球轻还是重。
代码:
#include<iostream>
using namespace std;
int a12(int a[])
{
if(a[1]+a[2]+a[3]+a[4]==a[5]+a[6]+a[7]+a[8])
{
if(a[1]+a[9]==a[10]+a[11])
{
if(a[1]>a[12]) return(-12);
else
return(12);
}
else if(a[1]+a[9]>a[10]+a[11])
{
if(a[10]==a[11]) return(9);
else if(a[10]==a[11]) return(9);
else if(a[10]>a[11]) return (-11);
else
return(-10);
}
else
{
if(a[10]==a[11]) return(-9);
else if(a[10]>a[11]) return(10);
else return(11);
}
}
else if(a[1]+a[2]+a[3]+a[4]>a[5]+a[6]+a[7]+a[8])
{
if(a[1]+a[2]+a[6]==a[3]+a[4]+a[5])
if(a[1]==a[7]) return(-8);
else
return(-7);
else if(a[1]+a[2]+a[6]>a[3]+a[4]+a[5])
{
if(a[1]==a[2]) return(-5);
else
if(a[1]>a[2]) return(1);
else
return(2);
}
else
{
if(a[3]==a[4]) return(-6);
else if(a[3]>a[4]) return(3);
else return(4);
}
}
else
{
if(a[1]+a[2]+a[6]==a[3]+a[4]+a[5])
if(a[1]==a[7]) return(8);
else
return(7);
else if(a[1]+a[2]+a[6]>a[3]+a[4]+a[5])
{
if(a[3]==a[4]) return(6);
else
if(a[3]>a[4]) return(-4);
else
return(-3);
}
else
{
if(a[1]==a[2]) return(5);
else if(a[1]>a[2]) return(-2);
else return(-1);
}
}
}
int main()
{
int a[13]={0,5,5,5,5,5,5,5,4,5,5,5,5};
cout<<"k="<<a12(a)<<endl;
return 0;
}
运行
表示第八个小球轻