1. 程式人生 > >java菜鳥---------給出測量結果找假硬幣

java菜鳥---------給出測量結果找假硬幣

* 有12枚硬幣其中有一枚是假的,其質量和真的不一樣,用天平進行測量
 * 給出3次測量結果,求哪一枚是假的
 * 三次結果
 * 1234和5678天平水平
 * 1239和56 10 11右邊比較重

 * 129 10和5678水平

public class leaarn1 {
       public static void main(String[] args) {
    	   //假設12枚硬幣質量都為一,
		int []a={1,1,1,1,1,1,1,1,1,1,1,1,};
		//將每一硬幣假設成假的,從第一枚開始
		for (int i = 0; i < a.length; i++) {
			//假的有兩種可能要麼重,要麼輕
			for (int j = 0; j <2; j++) {
				//假設假的是輕的
				if (j==0) {
					a[i]=0;
					//與測量結果進行比較,
					if ((a[0]+a[1]+a[2]+a[3]==a[4]+a[5]+a[6]+a[7])&&
							(a[0]+a[1]+a[2]+a[8]<a[4]+a[5]+a[9]+a[10])
							&&(a[0]+a[1]+a[8]+a[9]==a[4]+a[5]+a[6]+a[7])) {
						System.out.println("第"+(i+1)+"枚硬幣是假的");
						return;//如果和測量結果一樣即,執行結束,不在進行以後的運算
					}
				}
				//假設假的硬幣是重的
				if (j==1) {
					a[i]=2;
					if ((a[0]+a[1]+a[2]+a[3]==a[4]+a[5]+a[6]+a[7])&&
							(a[0]+a[1]+a[2]+a[8]<a[4]+a[5]+a[9]+a[10])
							&&(a[0]+a[1]+a[8]+a[9]==a[4]+a[5]+a[6]+a[7])) {
						System.out.println("第"+(i+1)+"枚硬幣是假的");
						return;//如果和測量結果一樣即,執行結束,不在進行以後的運算
					}
				}
				a[i]=1;//如果這枚硬幣不是所要求即該枚硬幣,則質量重新為1
			}
		}
	} 
}


不足的地方或者還有更優的解決方案請大佬指點。。。
                                                                                                                             一個努力成為程式設計師的學生