N枚硬幣問題

2021-09-05 12:09:09 字數 617 閱讀 4963

問題定義:已知n枚硬幣質量,其中有一枚假幣(或輕或重),請找出假幣

思路:若n<3,無法判斷

若範圍縮小至一枚硬幣,拿一枚真幣比較輕重

若範圍縮小至兩枚硬幣,拿一枚真幣與其中一枚比較輕重,縮小範圍至一枚硬幣

若範圍在三枚以上,將硬幣三分,左邊num/3枚,右邊num/3枚,其餘放中間(num為範圍大小)。

4.1若左邊硬幣質量等於右邊,縮小範圍到中間

4.2若左邊硬幣質量等於num/3枚真幣的質量,縮小範圍到右邊

4.2.1 若不等於,假幣範圍在左邊

**加注釋:

#include#includeusing namespace std;

#define n 1005

void judge(int *a,int n,int p,int q)

else if(q>n;

cout<

for(int i=0;i>a[i];

judge(a,n,0,n-1);

return 0;

}

截圖:

n枚硬幣問題

大致說一下問題,就是在n枚硬幣中存在乙個假幣,但不知道假幣比真幣中還是輕,你只有乙個天秤,要你用最少的比較次數找到假幣在哪。本來的思路是不斷二分,如果硬幣是偶數枚,那恰好能分成兩份,第一次分成的這兩份肯定乙份重乙份輕,並且無法判斷假幣在哪乙份裡。但如果把第乙份再二分,如果重量相等的話,假幣肯定在第一...

八枚硬幣問題

1.問題描述 設有八枚硬幣,分別表示為a b c d e f g h,其中有且僅有一枚硬幣是假幣,並且假幣的重量與真幣的重量不同,可能輕,也可能重。現要求以天平為工具,用最少的比較次數挑選出假幣,並同時確定這枚假幣的重量比其它真幣是輕還是重。2.解題思路 八枚硬幣的判定過程可以用樹結構來描述。把硬幣...

n枚硬幣問題(假幣問題) 分治法(減治法)

1 8枚硬幣問題 在8枚外觀相同的硬幣中,有一枚是假幣,並且已知假幣與真幣的重量不同,但不知道的是假幣與真幣相比較是輕還是重。可以通過一架天平來比較兩組硬幣 減治法將原問題一分為三,8枚硬幣分別表示a,b,c,d,e,f,g,h,從8枚中取6枚在天平兩端各放3枚比較,三種結果 a b c d e f...