有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真幣重量不同,但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次,告訴你稱的結果,請你找出假幣並且確定假幣是輕是重(資料保證一定能找出來)。
輸入:第一行是測試資料組數。每組資料有三行,每行表示一次稱量的結果。銀幣標號為a-l。每次稱量的結果用三個以空格隔開的字串表示:天平左邊放置的硬幣 天平右邊放置的硬幣 平衡狀態。其中平衡狀態用``up'', ``down'', 或 ``even''表示, 分別為右端高、右端低和平衡。天平左右的硬幣數總是相等的。
輸出:輸出哪乙個標號的銀幣是假幣,並說明它比真幣輕還是重。
輸入樣例
1abcd efgh even
abci efjk up
abij efgh even
輸出樣例
k is the counterfeit coin and it is light.
解題思路:對於每一枚硬幣先假設它是輕的,看這樣是否符合稱量結果。如果符合,問題即解決。如果不符合,就假設它是重的,看是否符合稱量結果。把所有硬幣都試一遍,一定能找到特殊硬幣。
"""輸入樣例
1abcd efgh even
abci efjk up
abij efgh even
輸出樣例
k is the counterfeit coin and it is light.
"""#輸入測試資料時,是一行一行輸入的,沒有實現整行一次輸入,需要優化
list =
def getinputlist():
groupnum = int(input("請輸入測試資料組數:"))
for i in range(3):
#假設球是輕的情況,對輸入的測量資料都應該滿足,如果不滿足,則假設不成立
def isfakelight(c):
for j in range(3):
if list[j][2][0] == 'u':
if list[j][1].find(c) < 0:
return false
break
if list[j][2][0] == 'e':
if list[j][0].find(c) >= 0 or list[j][1].find(c) >= 0:
return false
break
if list[j][2][0] == 'd':
if list[j][0].find(c) < 0:
return false
break
return true
#假設球是重的情況
def isfakeweight(c):
for j in range(3):
if list[j][2][0] == 'u':
if list[j][0].find(c) < 0:
return false
break
if list[j][2][0] == 'e':
if list[j][0].find(c) >= 0 or list[j][1].find(c) >= 0:
return false
break
if list[j][2][0] == 'd':
if list[j][1].find(c) < 0:
return false
break
return true
def main():
#input("請輸入三組資料,每組資料以空格間隔:").split()
getinputlist()
for i in range(65,77): #遍歷a--m,因為需要遍歷到l字母,所以寫m
#從a-l逐個列舉驗證
#如果本枚假幣是輕的情況,對輸入的3個測量結果都成立,則輸出該枚硬幣
if isfakelight(chr(i)):
print("%c is the counterfeit coin and it is light." %i)
break
# 如果本枚假幣是重的情況,對輸入的3個測量結果都成立,則輸出該枚硬幣
if isfakeweight(chr(i)):
print("%c is the counterfeit coin and it is weight." % i)
break
if __name__=="__main__":
main()
POJ1013假幣問題 列舉
題幹 一共十二枚銀幣,一枚假的,注意就一枚是假的,假幣重量與真幣不同。通過三次稱重來判別真假硬幣,並判斷比真的輕還是重,測量結果,up,down,even分別表示右盤輕了,右盤重了,平衡。硬幣用a l表示 解題思路 列舉假設硬幣是輕的,看是否符合每乙個測量結果,符合這枚硬幣就是假硬幣,輕 否則假設硬...
求解查詢假幣問題
二分 include include include define max 100 int a max int n intsum int low,int high return sum int solve int low,int high if low high 1 int mid low high...
HPU 1042 假幣問題
時間限制 1 sec記憶體限制 128 mb 提交 200解決 34統計 居然有假幣!事情是這樣的,現在豬肉漲了,但是農民的工資卻不見漲啊,沒錢怎麼買豬肉啊。老王這就去買豬肉,結果找來的零錢中有假幣!可惜老王一不小心把它混進了一堆真幣裡面去了。現在知道假幣的重量比真幣的質量要輕。給你乙個天平,請用最...