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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

枚举:假币问题

發布時間:2023/12/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 枚举:假币问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

林克有12枚銀幣。其中有11枚真幣和1枚假幣。假幣看起來和真幣沒有區別,但是重量不同。但林克不知道假幣比真幣輕還是重。

于是他向他朋友約珥借了一架天平,用這架天平稱了這些幣三次。

如果用天平稱兩枚硬幣,發現天平平衡,說明兩枚都是真的。如果用一枚真幣與另一枚銀幣比較,發現它比真幣輕或重,說明它是假幣。

經過精心的設計,聰明的林克根據這三次稱量結果找出假幣,并且能夠確定假幣是輕是重。

如果給你林克的稱量數據,你也可以找出假幣并且確定假幣是輕是重嗎?(林克提供的稱量數據保證一定能找出假幣)。

輸入

第一行有一個數字n,表示有n組測試用例。

對于每組測試用例:

輸入有三行,每行表示一次稱量的結果。林克事先將銀幣標號為A-L。

每次稱量的結果用三個以空格隔開的字符串表示:

天平左邊放置的硬幣? 天平右邊放置的硬幣? 平衡狀態。

其中平衡狀態用``up'', ``down'', 或 ``even''表示, 分別為右端高、右端低和平衡。天平左右的硬幣數總是相等的。

1
ABCD EFGH even?
ABCI EFJK up?
ABIJ EFGH even?

輸出

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

每組案例的輸出占一行。

K is the counterfeit coin and it is light.

對每種結果進行枚舉即可,看看滿不滿足三個條件。

#include<iostream> #include<cstring> std::string left[3],right[3],result[3];bool test(char ch,bool islight){//light:右端輕 std::string c;c.push_back(ch);//char->string//三個條件int count=0; for(int i=0;i<3;i++){std::string l = left[i];std::string r = right[i];if (islight==false) swap(l,r);//相當于是左端重 交換了,仍然是右端重 switch(result[i][0]){case 'e':{if (l.find(c)!=std::string::npos||r.find(c)!=std::string::npos){//平衡卻找到了假幣 return false;}break;}case 'u':{if (r.find(c)==std::string::npos){//右邊高,但是沒找到 return false;}break;}case 'd':{if (l.find(c)==std::string::npos){//左邊高,但是沒找到return false;}break;} }} return true;//三個都滿足 正常退出 } int main() {int t;std::cin>>t;while(t--){for(int i=0;i<3;i++){std::cin>>left[i]>>right[i]>>result[i];}//開始枚舉for(char ch = 'A';ch<='L';ch++){if (test(ch,true)){//light std::cout<<ch<<" is the counterfeit coin and it is light. "<<std::endl;break;}else if (test(ch,false))//heavy {std::cout<<ch<<" is the counterfeit coin and it is heavy. "<<std::endl;break;}} }return 0;}

總結

以上是生活随笔為你收集整理的枚举:假币问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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