【題目】 給你乙個裝有1 6個硬幣的袋子。1 6個硬幣中有乙個是偽造的,並且那個偽造的硬幣比真的硬幣要輕一些。你的任務是找出這個偽造的硬幣。為了幫助你完成這一任務,將提供一台可用來比較兩組硬幣重量的儀器,利用這台儀器,可以知道兩組硬幣的重量是否相同。比較硬幣1與硬幣2的重量。假如硬幣1比硬幣2輕,則硬幣1是偽造的;假如硬幣2比硬幣1輕,則硬幣2是偽造的。
【演算法】
class program
coin newcoin = new coin();
getcoin(list,ref newcoin); //獲取最輕的硬幣
console.writeline("id of the light coin is ,its height is ", newcoin.id,newcoin.height);
console.read();
}///
/// 採用遞迴方式
///
/// 硬幣集合
/// 傳遞引數 用於返回目標硬幣
public static void getcoin(listlist,ref coin refcoin)
for (int j = mid; j < list.count; j++)
if (oneheight >= twoheight)
else
}else
else}}
}}///
/// 定義硬幣類,硬幣屬性:id、height
///
public class coin
set
}private int height;
public int height
set
}public coin()
public coin(int id,int height)
如果硬幣的數量為奇數n,則可以分為(n-1)和1個。按照上述方法從(n-1)裡找出目標硬幣再和這乙個單獨硬幣比較。。
找出偽幣問題
簡介 找出偽幣問題 利用遞迴與分治演算法實現 題目 裝有 1 6個硬幣的袋子。1 6個硬幣中有乙個是偽造的,並且那個偽造的硬幣比真的硬幣要輕一些。我們要找出這個偽造的硬幣。我們有一台可用來比較兩組硬幣重量的儀器,利用這台儀器,可以知道兩組硬幣的重量是否相同.解決思路 將 16個硬幣分為 a,b兩堆,...
偽幣識別問題
偽幣識別問題。乙個袋子中裝有256 枚金幣,其中有一枚是偽幣,且已知偽幣比真的金幣要輕。現在給你一架天平,如何快速找出那枚偽幣?使用分治策略來對該問題進行求解,設計並實現相應的分治演算法。思路 採用二分法,將乙個金幣分為a b兩部分,分別計算a b部分的質量和,因為金幣為偶數個且偽幣比金幣要輕,所以...
找出陣列中重複的數字 演算法
給定乙個長度為 n 的整數陣列nums,陣列中所有的數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1 的範圍內,或陣列中不包含重複數字,則返回 1 給定 nums 2 3,...