實驗專案3———8枚硬幣問題
1.問題分析:
這個問題就是要找出這八枚硬幣中放入假幣,前提是還不知道是偏重還是偏輕,所有,要設計乙個高效的演算法找出這麼假幣,並且得知是偏重還是偏輕。
假定輸入的八枚硬幣:a、b、c、d、e、f、g、h
把硬幣分成三組,從八枚硬幣中任取六枚a、b、c、d、e、f,在天平兩端各放三枚進行比較。 假設a、b、c三枚放在天平的一端,d、e、f三枚放在天平的另一端,可能出現如圖所示的三種比較結果。
2.演算法設計思路--偽**emmmmm----寫給自己看的,不會寫偽**,隨便寫的
輸入:硬幣的重量
輸出:假幣所在的位置以及偏輕還是偏重
1.如果abc的重量大於def的重量,就移開cf,交換be的位置
1.如果ae的重量大於db的重量,比較a,d和g幣的重量,並且輸出
2.如果ae的重量等於db的重量,比較cf和g幣的重量,並且輸出
3.如果ae的重量小於db的重量,比較eb和g幣的重量,並且輸出
2. 如果abc的重量等於def的重量, 比較gh和a幣的重量,並且輸出
3. 如果abc的重量小於def的重量,同步驟1.
4.演算法結束
3.演算法實現
程式源**:
#includeusing namespace std;
void findout(int v);//在八枚硬幣中查詢
void cmp(int a,int b,int real,int index1,int index2);//將兩枚硬幣和真硬幣比較,找出其中的假硬幣
void outcome(int fal,int tru,int i);//列印資料
int main()
void findout(int v)
else if((a+e) == (d+b))
else
}else if(abc == def)
else
}else
else if((a + e) == (d + b))
else
}}void outcome(int fal,int tru,int i)
int ncoin(int v, int n, int low, int high)
else
if(a==c)
if(b==c)}}
if(remain == 1) //第三組剩下一枚硬幣的情況
if(maxnum<3)
{cout<
執行截圖如下:
八枚硬幣問題
1.問題描述 設有八枚硬幣,分別表示為a b c d e f g h,其中有且僅有一枚硬幣是假幣,並且假幣的重量與真幣的重量不同,可能輕,也可能重。現要求以天平為工具,用最少的比較次數挑選出假幣,並同時確定這枚假幣的重量比其它真幣是輕還是重。2.解題思路 八枚硬幣的判定過程可以用樹結構來描述。把硬幣...
演算法設計 八枚硬幣問題
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!八枚硬幣問題 問題描述 在八枚外觀相同的硬幣中,有一枚是假幣,並且已知假幣與真幣的重量不同,但不知道假幣與真幣相比較輕還是較重。可以通過一架天平來任意比較兩組硬幣,設計乙個高效的演算法來檢測出這枚假幣。解決思路 假定輸入的八枚硬幣 a b c d ...
八枚硬幣(c python略)
八枚硬幣 現有八枚銀幣a b c d e f g h,已知其中一枚是假幣,其重量不同於真幣,但不知是較輕或較重,如何使用天平以最少的比較次數,決定出哪枚是假幣,並得知假幣比真幣較輕或較重。printf 請輸入八枚硬幣的質量 for int i 0 i 8 i for int j 0 j 8 j ge...