稱硬幣

有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真 幣重量不同,但不知道假幣比真幣輕還是重?,F(xiàn)在,用一架天平稱了這些幣三次,告訴你稱的結(jié)果,請(qǐng)你找出假幣并且確定假幣是輕是重(數(shù)據(jù)保證一定能找出來)。
輸入
第一行是測(cè)試數(shù)據(jù)組數(shù)。 每組數(shù)據(jù)有三行,每行表示一次稱量的結(jié)果。銀幣標(biāo)號(hào)為 A-L。每次稱量的結(jié)果用三個(gè)以空格隔開的字符串表示: 天平左邊放置的硬幣 天平右邊放置的硬幣 平衡狀態(tài)。其
中平衡狀態(tài)用up'',down'', 或 ``even''表示, 分別為右 端高、右端低和平衡。天平左右的硬幣數(shù)總是相等的。
輸出
輸出哪一個(gè)標(biāo)號(hào)的銀幣是假幣,并說明它比真幣輕還是重。
輸入樣例
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
輸出樣例
K is the counterfeit coin and it is light.

#include <iostream>
#include <cstring>
using namespace std;

char Left[3][7]; //天平左邊硬幣
char Right[3][7];  //天平右邊硬幣
char result[3][7];  //結(jié)果
bool IsFake(char c,bool light)
//light 為真表示假設(shè)假幣為輕,否則表示假設(shè)假幣為重
{
    for(int i = 0;i < 3; ++i) {
        char * pLeft,*pRight; //指向天平兩邊的字符串 
        if(light) {
            pLeft = Left[i];
            pRight = Right[i];
        }
        else {//如果假設(shè)假幣是重的,則把稱量結(jié)果左右對(duì)換 
            pLeft = Right[i];
            pRight = Left[i];
        }
        switch(result[i][0]) { //天平右邊的情況
            case 'u':
                if ( strchr(pRight,c) == NULL)
                        return false;
                break; 
            case 'e':
                if( strchr(pLeft,c) || strchr(pRight,c))
                        return false;
                break; 
            case 'd':
                if ( strchr(pLeft,c) == NULL)
                    return false;
                break;
        }
    }
return true;
}



int main(int argc, char const *argv[])
{
    int t;
    cin>>t;
    while(t--){
        for(int i=0;i<3;++i){
            cin>>Left[i]>>Right[i]>>result[i];
        }
        for(char c='A';c<='L';c++){
            if(IsFake(c,true)){
                cout << c << " is the counterfeit coin and it is light.\n";
                break;
            }
            else if( IsFake(c,false) ){
                cout << c << " is the counterfeit coin and it is heavy.\n"; 
                break;
            }
        }
    }
    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問題描述 賽利有 12 枚銀幣。其中有 11 枚真幣和 1 枚假幣。假幣看起來和真幣沒有區(qū)別,但是重量不同。但賽利...
    指尖極光閱讀 398評(píng)論 0 0
  • 基于逐個(gè)嘗試答案的一種問題求解策略 完美立方: 形如 a^3 = b^3 + c^3 + d^3 的等式稱為完美立...
    皮了個(gè)卡丘喵喵噠閱讀 273評(píng)論 0 0
  • 問題描述 假設(shè)你有十二個(gè)硬幣,其中有一個(gè)是假幣,重量和其他硬幣不一樣。如果你有三次使用測(cè)量天平的機(jī)會(huì),你該怎么做?...
    YXCheng閱讀 1,333評(píng)論 0 1
  • 是時(shí)候?qū)徱曌约毫?,?dāng)奔三的路走了一半還碌碌無為。 曾經(jīng)我也是個(gè)太陽,走到哪里都發(fā)著溫暖的光。開心就笑,不開心了躲起...
    張傾城閱讀 161評(píng)論 0 0
  • 當(dāng)一艘船沉入海底,當(dāng)一個(gè)人成了迷。你不知道,我們?yōu)楹蜗嘤觥? 誰都不知道,自覺和生活融合的越貼切,卻...
    心中自然有神明閱讀 547評(píng)論 1 51

友情鏈接更多精彩內(nèi)容