日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

枚举算法称硬币C语言,【算法系列之枚举】称硬币

發(fā)布時間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 枚举算法称硬币C语言,【算法系列之枚举】称硬币 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目

有12枚硬幣。其中有11枚真幣和1枚假幣。假幣和真 幣重量不同,但不知道假幣比真幣輕還是重?,F(xiàn)在, 用一架天平稱了這些幣三次,告訴你稱的結果,請你 找出假幣并且確定假幣是輕是重(數(shù)據(jù)保證一定能找 出來)。

輸入

第一行是測試數(shù)據(jù)組數(shù)。 每組數(shù)據(jù)有三行,每行表示一次稱量的結果。銀幣標號 為A-L。每次稱量的結果用三個以空格隔開的字符串表示: 天平左邊放置的硬幣 天平右邊放置的硬幣 平衡狀態(tài)。其 中平衡狀態(tài)用``up‘‘, ``down‘‘, 或 ``even‘‘表示, 分 別為右端高、右端低和平衡。天平左右的硬幣數(shù)總是相等 的。

輸出

輸出哪一個標號的銀幣是假幣,并說明它比真幣輕還是重。

輸入樣例

1

ABCD EFGH even

ABCI EFJK up

ABIJ EFGH even

輸出樣例

K is the counterfeit coin and it is light.

解題思路

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

完整代碼

1 #include

2 #include

3 using namespacestd;4 char Left[3][7]; //天平左邊硬幣,3代表3次稱量情況,7代表硬幣數(shù)

5 char Right[3][7]; //天平右邊硬幣

6 char result[3][7]; //結果

7 bool IsFake(char c,boollight) ;8 //light 為真表示假設假幣為輕,否則表示假設假幣為重

9 intmain() {10 intt; //測試數(shù)據(jù)組數(shù)11 cin >>t;12 while(t--) {13 for(int i = 0;i < 3; ++i) cin >> Left[i] >> Right[i]>>result[i];14 for(char c=‘A‘; c<=‘L‘;c++) {15 if( IsFake(c,true) ){16 cout << c << "is the counterfeit coin and it is light.\n";17 break;18 }19 else if( IsFake(c,false) ){20 cout << c << "is the counterfeit coin and it is heavy.\n";21 break;22 }23 }24 }25 return 0;26 }27 bool IsFake(char c,boollight)28 //light 為真表示假設假幣為輕,否則表示假設假幣為重

29 {30 for(int i = 0;i < 3; ++i) {31 char * pLeft,*pRight; //指向天平兩邊的字符串

32 if(light) {33 pLeft =Left[i];34 pRight =Right[i];35 }36 else{37 pLeft =Right[i];38 pRight =Left[i];39 }40 switch(result[i][0]) {41 case ‘u‘:42 if ( strchr(pRight,c) ==NULL)43 return false;44 break;45 case ‘e‘:46 if( strchr(pLeft,c) ||strchr(pRight,c))47 return false;48 break;49 case ‘d‘:50 if ( strchr(pLeft,c) ==NULL)51 return false;52 break;53 }54 }55 return true;56 }

原文:http://www.cnblogs.com/vinpho/p/7197843.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的枚举算法称硬币C语言,【算法系列之枚举】称硬币的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。