找出偽幣問題

2021-08-08 02:41:43 字數 727 閱讀 4492

簡介

找出偽幣問題

利用遞迴與分治演算法實現

題目: 裝有

1 6個硬幣的袋子。

1 6個硬幣中有乙個是偽造的,並且那個偽造的硬幣比真的硬幣要輕一些。我們要找出這個偽造的硬幣。我們有一台可用來比較兩組硬幣重量的儀器,利用這台儀器,可以知道兩組硬幣的重量是否相同.

解決思路: 將

16個硬幣分為

a,b兩堆,進行比較。如果

a堆輕的話,在從

a堆中分為

aa,ab

兩堆進行比較。知道找出偽幣為止。

/*** 遞迴與分治演算法----找出偽幣問題

* @param arr 偽幣陣列

* @param from 起始位置

* @param to 截止位置

* @return 偽幣下標 -1 為沒有偽幣

*/public static int binarysearch(int arr,int from,int to)else

for(int j=tomin;j<=to;j++)

//如果 總和相等 返回 -1 未查到

if(sumfrom ==sumto)

// 如果不相等,小的總和 進行遞迴

result = sumfrom-sumto>0?binarysearch(arr,tomin,to):binarysearch(arr,from,frommax);

}return result;}}

演算法 找出偽幣

題目 給你乙個裝有1 6個硬幣的袋子。1 6個硬幣中有乙個是偽造的,並且那個偽造的硬幣比真的硬幣要輕一些。你的任務是找出這個偽造的硬幣。為了幫助你完成這一任務,將提供一台可用來比較兩組硬幣重量的儀器,利用這台儀器,可以知道兩組硬幣的重量是否相同。比較硬幣1與硬幣2的重量。假如硬幣1比硬幣2輕,則硬幣...

偽幣識別問題

偽幣識別問題。乙個袋子中裝有256 枚金幣,其中有一枚是偽幣,且已知偽幣比真的金幣要輕。現在給你一架天平,如何快速找出那枚偽幣?使用分治策略來對該問題進行求解,設計並實現相應的分治演算法。思路 採用二分法,將乙個金幣分為a b兩部分,分別計算a b部分的質量和,因為金幣為偶數個且偽幣比金幣要輕,所以...

找出單身狗問題

題目 乙個陣列中只有兩個數字是出現一次,其他所有數字都出現了兩次,找出這兩個只出現一次的數字。要求 時間複雜度o n include void find1 int a,int n,int num 排序結果為1 1 2 2 3 4 5 5 6 6 int sign 0 i 0 int k 0 whil...