假币问题python
生活随笔
收集整理的這篇文章主要介紹了
假币问题python
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
???????假幣問題:
?
? 這里假幣默認比真幣輕,而且是每次比較兩堆,即一個天平。
def compare(coinA, coinB): #比較兩堆硬幣的重量if sum(coinA) < sum(coinB):result = 'left'elif sum(coinA) > sum(coinB):result = 'right'else:result = 'eqal'return resultdef split(coin,n): #分割coin硬幣為兩堆coinA = coin[0: n // 2]coinB = coin[n // 2: n]return coinA, coinBdef Judge(coin,index): #判斷硬幣中假幣的位置n = len(coin)if n == 0:print('no coins')elif n == 1:print(' fake coin index:', index)elif n == 2:if coin[0] < coin[1]:print('fake coin index:', index)else:print('fake coin index:', index+1)elif n % 2 == 0 and n > 2:coinA, coinB = split(coin, n)result = compare(coinA, coinB)if result == 'left':coin = coinAJudge(coin, index)elif result == 'right' :index += n / 2coin = coinBJudge(coin, index)else:print(n)elif n % 2 == 1 and n > 2:coinA,coinB = split(coin, n-1)result = compare(coinA, coinB)if result == 'eqal':print('fake coin index:', index)else:if result == 'left':coin = coinAJudge(coinA, index)else:index += (n-1) / 2coin = coinBJudge(coinB, index)#設置假幣數組,當然你可以隨機生成,生成的假幣比真幣輕,而且真幣質量相等 coin = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10] index = 0 print(coin) Judge(coin, index)算法
input:真假幣組成的數組,其值為質量,假幣默認為輕。事先不知各個重量 output:假幣下標 function:compare()//比較兩堆硬幣的質量 function:coinA, coinB = split()//分割硬幣為兩堆Judge()// 主函數,參數為硬幣和下標n = 硬幣個數if n == 0沒有硬幣elif n ==1該幣為假幣elif n == 2compare()假幣為較輕者elif n % 2 == 0 and n > 2compare()if 假幣在A堆里Judge(coinA,index)elif 假幣在B堆里Judge(coinB,index)else 此時先取出末尾一個硬幣,使其數量為偶compare()if 兩堆硬幣質量相等假幣為取出的那個elsecoinA,coinB中較輕者另其為coinJudge(coin,index)總結
以上是生活随笔為你收集整理的假币问题python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 融资融券开户超干货学习!
- 下一篇: Python入门到放弃