當前位置:
首頁 >
假币问题 (n枚硬币+未知轻重+DFS)
發(fā)布時間:2023/12/18
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
假币问题 (n枚硬币+未知轻重+DFS)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
在n(n>=3)n(n>=3)n(n>=3)枚硬幣中有一枚重量不合格的硬幣(過輕或者過重),若只有一架天平可以用來稱重,且稱重的硬幣數(shù)量沒有限制,設(shè)計一個算法找出這枚不合格的硬幣,使得稱重次數(shù)最少。
題目分析
本題用的是減治法,我找了很多網(wǎng)上的寫法,但是沒有符合我想象中的代碼,或者就是題目略有不同,所以決定自己寫一個。寫的時候花了很長時間處理邊界問題。
注意本題是n枚硬幣,并且沒有事先告知硬幣是偏重還是偏輕,因此如果就是根據(jù)重量的大小來判斷,無法得到正確的答案。
遞歸C++
主要的思想是根據(jù)數(shù)組的奇偶來分:
- 長度為奇數(shù)時,先不考慮第一個元素,對往后的元素分兩段求和,判斷它們的大小。如果不相等,則先后遞歸處理左右兩段。如果相等,并且第一個元素不等于第二個元素(這個條件很重要,若只是后面兩段相等,并不能得出第一個元素就是假幣),那么第一個元素就是假幣
- 長度為偶數(shù)時,將數(shù)組分成長度相等的兩段,并分別求和。若相等,則假幣不在這個區(qū)間里;若不等,遞歸處理左右兩段
總結(jié)
以上是生活随笔為你收集整理的假币问题 (n枚硬币+未知轻重+DFS)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解方程计算器,一款数学神器APP,有需要
- 下一篇: 槑!Vitas翻唱青藏高原