有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...