尋找假幣問題(二分法)

2021-10-10 18:44:50 字數 734 閱讀 2782

有n個硬幣,編號為1~n,其中有乙個假幣,且假幣較輕,如何採用天平稱重方式找到這個假幣?

可採用如下的分治演算法解決這個問題:

如果n為偶數,則將這n個硬幣分成兩等份,並將兩份硬幣放到天平兩端,假幣在較輕的那端

2, 如果n為奇數,則取出第1個硬幣後將其餘硬幣分成兩等份,並將兩份硬幣放到天平兩端

2.1 如果兩份硬幣的重量相等,則第乙個硬幣為假幣

2.2 否則,假幣在較輕的那一端

對較輕的那份硬幣重複進行操作1-2,直到最後只剩下兩個硬幣了,分別放到天平的兩端,輕的那乙個就是假幣。

整數n(3<=n<=1000,表示硬幣的數量)及整數m(1<=m<=n,表示假幣的序號)

按題目給出的演算法尋找假幣時,天平稱重次數

輸入

10 5輸出3

#include

#include

#include

using namespace std;

void

num(int i ,int j, int n ,int m ,int &count)

else

}else

elseif(

(m -1)

<=

(q + n -1)

)else

}else

else}}

}int main()

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

砍樹問題 二分法

題目描述森林裡有n棵高高低低的樹木,伐木工阿強接到老闆的通知,需要k段等長的木材,阿強為了能掙更多錢,所以砍的木材要盡可能的長,所以引出乙個問題,阿強最長能砍到多長的木材。輸入第一行輸入n和k,n表示n棵樹木,k表示老闆需要k段木材。1 n 100,1 k 100 第二行輸入n個數,第i個數表示第i...