我的八枚硬幣問題

2021-09-05 12:01:08 字數 1521 閱讀 5552

實驗專案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...