PAT 1018 錘子剪刀布
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式
輸入第1行給出正整數N(<=105),即雙方交鋒的次數。隨後N行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。C代表“錘子”、J代表“剪刀”、B代表“布”,第1個字母代表甲方,第2個代表乙方,中間有1個空格。
輸出格式
輸出第1、2行分別給出甲、乙的勝、平、負次數,數字間以1個空格分隔。第3行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有1個空格。如果解不唯一,則輸出按字母序最小的解。
輸入樣例
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
輸出樣例
5 3 2
2 3 5
B B
#include <iostream>
using namespace std;
int change(char c){ //將三個手勢對應轉換為數字
if(c == 'B') return 0;
if(c == 'C') return 1;
if(c == 'J') return 2;
return -1;
}
int main(){
char mp[3] = {'B', 'C', 'J'}; //用字元陣列mp[0 ~ 2]代表BCJ 方便的是在最後輸出時做一個轉換
//countA[0 ~ 2] 代表甲 贏平負的次數 countB 代表乙
//victoryA[0 ~ 2] 代表甲使用 布錘剪 獲勝的次數 victoryB代表乙
int countA[3] = {0}, countB[3] = {0}, victoryA[3] = {0}, victoryB[3] = {0};
int n; //交鋒場數
cin >> n;
char c1, c2; //輸入甲 乙的 手勢
int k1, k2; //k1代表 甲手勢轉化後的數字, k2代表乙的
for(int i = 0; i < n; i++){
cin >> c1 >> c2;
k1 = change(c1); //轉化為數字
k2 = change(c2);
/*
由於設定的順序是字典序 且恰好就是迴圈相剋順序,因此
k1 勝 k2 的條件就是(k1 + 1) % 3 == k2;
k1 平 k2 的條件就是 k1 == k2;
k1 k2
0 > 1 布 大 石
1 > 2 石 大 剪
2 > 0 剪 大 布
很顯然我們 想要 k1 勝利的話 只有在 (k1 + 1) % 3 == k2 時條件成立(很顯然我這句話也是廢話QAQ)
總之我們理解 記住就好,慢慢來,一點一點積累~
*/
if((k1 + 1) % 3 == k2){
countA[0]++; //甲獲勝次數 加一
countB[2]++; //乙失敗次數 加一
victoryA[k1]++; //甲使用 k1 手勢獲勝的 次數加一
}
else if(k1 == k2){
countA[1]++; //平
countB[1]++;
}
else{
countA[2]++; //甲輸
countB[0]++; //乙贏
victoryB[k2]++; //乙使用 k2 手勢獲勝的 次數加一
}
}
cout << countA[0] << " " << countA[1] << " " << countA[2] << endl;
cout << countB[0] << " " << countB[1] << " " << countB[2] << endl;
int max1 = 0, max2 = 0;
for(int i = 1; i < 3; i++){ //找出甲乙獲勝次數最多的手勢(即下標0~2 代表布錘剪)
if(victoryA[i] > victoryA[max1]) max1 = i;
if(victoryB[i] > victoryB[max2]) max2 = i;
}
cout << mp[max1] << " " << mp[max2] << endl;
//因為輸出的是字元而不是數字 所以通過mp陣列之前記錄對應的手勢 轉化為BCJ
return 0;
}
相關文章
- PAT1018錘子剪刀布
- PAT-B 1018 錘子剪刀布 【模擬】
- PAT B1018 錘子剪刀布 mw的解題思路與優化方案優化
- 剪刀石頭布程式(Python)Python
- Python剪刀石頭布遊戲Python遊戲
- 剪子布錘遊戲遊戲
- 程式碼日:剪刀石頭布 (RPS) 專案
- 小熊飛槳練習冊-03石頭剪刀布
- 「錘子」使用♂手冊
- 結對-遊戲《石頭剪刀布》-專案進度遊戲
- 拿個錘子看誰都是釘子
- 錘子重磅新機下月釋出 錘子將帶來什麼驚喜呢?
- 手裡拿著錘子,看啥都像釘子
- 天啦嚕!在家和偶像玩"剪刀石頭布",阿里工程師如何辦到?阿里工程師
- 天啦嚕!在家和偶像玩「剪刀石頭布」,阿里工程師如何辦到?阿里工程師
- 天啦嚕!在家和愛豆玩「剪刀石頭布」,阿里工程師如何辦到?阿里工程師
- 錘子數碼科技新增演出經紀服務
- 錘子科技堅果R1孔雀藍髮布:搭載驍龍845處理器 售價3299元起
- 石頭剪刀布?多人動作競技遊戲《永劫無間》戰鬥系統簡析遊戲
- 沒錢沒需求幹個錘子的數字化
- 程式碼都寫不完,還寫個錘子註釋!
- 現階段實踐“拿著錘子找釘子”的六個步驟
- 錘子堅果2配置疑似曝光:還用驍龍625?
- python之結合if條件判斷和生成隨機數的相關知識,完成石頭剪刀布的遊戲Python隨機遊戲
- 吳恩達教你如何使用“錘子”?機器學習新書免費領吳恩達機器學習新書
- 51微控制器系列(三)51 微控制器遊戲設計 —— 雙人對戰小遊戲(石頭剪刀布)遊戲設計
- 基於ARKit的iOS無限屏實現,還原錘子釋出會效果iOS
- 錘子堅果3詳細評測 堅果3怎麼樣值得買嗎?
- PAT A1025 PAT Ranking(sort部分排名)
- PAT-B 1085 PAT單位排行【模擬】
- 從一錘子買賣到培養“家軍”,遊戲直播營銷正在變天遊戲
- 羅永浩和錘子的蛻變:從單打獨鬥到融入手機江湖
- PAT A1101
- PAT A1041
- PAT A1054
- PAT 乙級
- 多少個PAT
- 錘子宣佈堅果Pro 2S明天現貨供應 售價1798元起