稱硬幣 列舉 演算法學習

2021-10-04 04:28:47 字數 1336 閱讀 7913

問題

有12枚硬幣。其中11枚真硬幣和1枚假硬幣。假幣和真幣重量不同

但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次

告訴你稱的結果,請你找出假幣並確定假幣是輕還是重(資料保證一定能找出來)

輸入第一行是測試資料組數。

每組資料有三行,每行表示一次稱量的結果。硬幣標號為a-l。每次稱量的結果用三個以空格隔開的字串表示:

天平左邊放置的硬幣 天平右邊放置的硬幣 平衡狀態。其中平衡狀態用「up」, 「down」, 或 「even」表示, 分別為

右端高、右端低和平衡。天平左右的硬幣數總是相等的。

輸出輸出哪乙個標號的硬幣是假幣,並說明它比真幣輕還是重。

輸入樣例

3

abcd efgh even

abci efjk up

abij efgh even

輸出樣例

k is the counterfeit coin and it is light

解題思路:

對於每一枚硬幣先假設他是輕的,看這樣是否符合稱量結果。如果符合,問題即解決。如果不符合就假設他是重的,看是否符合稱量結果。把所有硬幣都試一遍,一定能找到特殊硬幣

**:

#incude

#include

using

namespace std;

char left[3]

[7];

//天平左邊硬幣

char right[3]

[7];

//天平右邊硬幣

char result[3]

[7];

//結果

bool

isfake

(char c,

bool right)

;//light為真表示假設假幣為輕,否則表示假設假幣圍為重

intmain()

elseif(

isfake

(c,false))

}}bool

isfake

(char c,

bool light)

//light為真表示假幣為輕,否則假幣為重

else

switch

(result[i][0

])}return0;

}

稱硬幣 列舉

描述 莎莉瓊斯有一打旅行者銀幣。然而,只有十一枚硬幣是真正的銀元 一枚硬幣是假的,儘管它的顏色和大小使它與真正的銀元無法區分。假幣的重量與其他硬幣不同,但薩利不知道它比真正的硬幣重還是輕。令人高興的是,薩莉有乙個朋友,他借給她乙個非常精確的天平。這位朋友將允許薩利三次稱重以找到那枚偽幣。例如,如果莎...

列舉 稱硬幣

題目 有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真 幣重量不同,但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次,告訴你稱的結果,請你找出假幣並且確定假幣是輕是重 資料保證一定能找出來 輸入第一行是測試資料組數。每組資料有三行,每行表示一次稱量的結果。銀幣標號為 a l。每次稱量的結...

(列舉 稱硬幣

有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真 幣重量不同,但不知道假幣比真幣輕還是重。現在,用一架天平稱了這些幣三次,告訴你稱的結果,請你.找出假幣並且確定假幣是輕是重 資料保證一定能找 出來 輸入樣例 1 1組測試資料,每組測試資料有三行 abcd efgh even even平,up右邊高...