设有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;
- }
复制代码 运行
表示第八个小球轻
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |