演算法課 硬幣稱重

2021-10-05 13:57:35 字數 723 閱讀 6202

演算法標籤:分治策略

思路註明:

題目**

關於硬幣:關於乙個硬幣的問題。

如果有16個硬幣,都是一元的 重量是6g,其中有1個是假硬幣重量是5g,要求找出假的那個?

模仿實現 :

(1)需要乙個陣列 int a[17];

(2)所有陣列一開始全部給初始值6

(3)利用隨機函式 生成標號i 範圍在1-16之間 a[i]=5

(4)利用分治法方法 來解決問題

首先考慮的是折半查詢,但是這樣操作必須要解決的是需要排序為前提,而排序就違背了題目本意。

其次從歸併考慮,發現想從逆序對處理,返現遞迴到底合併時候又難計算總的位次,

於是我們從特性入手,

因為5是奇數,所以二分兩邊的塊是否%2!=0,否就二分檢索另一塊

我們把陣列設定為a1到a17,這樣中間數就是1+17>>1=9,初次只計算1-8和10-17,以此類推所有的遞迴都不重不漏。

這樣只要檢測到mid是奇數,返回即可

難點感覺完全是邊界值處理

#include

#include

#include

using

namespace std;

int a[18]

;int

search

(int l,

int r)

intmain()

經典演算法 關於硬幣稱重問題及程式設計實現

好吧,我承認我是被室友坑了,突然在寢室討論起這個,從晚上9點多一直搞到了現在,才搞完 不是徹底,但是搞定了大部分的問題 1,4硬幣稱重問題 2,8硬幣稱重問題 3,12硬幣稱重問題 傳送門 關於問題的解 12硬幣問題及解 12個硬幣不知輕重如何用三次稱出來?解法 要看挺久才能明白 傳送門 解法傳送門...

砝碼稱重 不同演算法解決

砝碼稱重問題 設有1g 2g 3g 5g 10g 20g的砝碼各若干枚 其質量 1000g 求出用他們能稱出的質量的種類數 不包括質量為0的情況 演算法思路 1 列舉不同砝碼的個數,計算總重量。並將總重量對應的標誌置為1 2 根據標誌,計算總質量的個數 include using namespace...

每天演算法 找硬幣

題目描述 伊娃喜歡從整個宇宙中收集硬幣。有一天,她去了一家宇宙購物中心購物,結賬時可以使用各種硬幣付款。但是,有乙個特殊的付款要求 每張帳單,她只能使用恰好兩個硬幣來準確的支付消費金額。給定她擁有的所有硬幣的面額,請你幫她確定對於給定的金額,她是否可以找到兩個硬幣來支付。輸入格式 第一行包含兩個整數...