PAT B1018 錘子剪刀布 mw的解題思路與優化方案
也是codeup上面題目編號6172的問題 I: 錘子剪刀布
題目
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,規則就不在這放了。現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入
輸入第1行給出正整數N(<=
1
0
5
10^5
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
解題思路
題目本身沒什麼另外的含義,總體難度來說也不是很難。就是可能判斷步驟會有點多。我選擇的是甲乙各建立一個長度為3的陣列存放勝、負、平的次數,在另外建立兩個長度為3的陣列存放各個手勢贏得次數。
接下來就是冗長的判斷步驟,對結果進行輸出即可。
我覺得全篇唯一難的點就是在題目輸出中寫的“如果解不唯一,則輸出按字母序最小的解。”這裡了。為此我在儲存勝利手勢的陣列中是按字母序進行存放的,也就是[0]存放的‘B’,[1]存放的是‘C’,[2]存放的是‘J’。判斷時遇到勝利次數相等的數時直接continue就好了。
具體看程式碼,不難理解。
總體程式碼
#include<stdio.h>
int n;
int main(){
scanf("%d",&n);
getchar();
int a[3]={0},b[3]={0},c[3]={0},d[3]={0};
char x,y;
for(int i=0;i<n;i++){
scanf("%c %c",&x,&y);
getchar();
if(x=='C'){
if(y=='C'){
a[1]++;
b[1]++;
}
if(y=='J'){
a[0]++;
b[2]++;
c[1]++;
}
if(y=='B'){
a[2]++;
b[0]++;
d[0]++;
}
}
if(x=='B'){
if(y=='C'){
a[0]++;
b[2]++;
c[0]++;
}
if(y=='J'){
a[2]++;
b[0]++;
d[2]++;
}
if(y=='B'){
a[1]++;
b[1]++;
}
}
if(x=='J'){
if(y=='C'){
a[2]++;
b[0]++;
d[1]++;
}
if(y=='J'){
a[1]++;
b[1]++;
}
if(y=='B'){
a[0]++;
b[2]++;
c[2]++;
}
}
}
int max1=c[0],max2=d[0];
int u=0,v=0;
for(int i=0;i<3;i++){
printf("%d",a[i]);
if(i<2){
printf(" ");
}
else printf("\n");
if(i>0&&max1==c[i]){
continue;
}
else if(max1<c[i]){
max1=c[i];
u=i;
}
}
for(int i=0;i<3;i++){
printf("%d",b[i]);
if(i<2){
printf(" ");
}
else printf("\n");
if(i>0&&max2==c[i]){
continue;
}
else if(max2<d[i]){
max2=d[i];
v=i;
}
}
if(u==0){
printf("B ");
}
else if(u==1){
printf("C ");
}
else if(u==2){
printf("J ");
}
if(v==0){
printf("B\n");
}
else if(v==1){
printf("C\n");
}
else if(v==2){
printf("J\n");
}
return 0;
}
這也是我跨年前就開始寫一直寫到跨年後的程式(簡稱寫了一年),祝各位元旦快樂(* ̄︶ ̄)!
相關文章
- PAT 1018 錘子剪刀布
- PAT1018錘子剪刀布
- PAT-B 1018 錘子剪刀布 【模擬】
- 剪刀石頭布程式(Python)Python
- Python剪刀石頭布遊戲Python遊戲
- 剪子布錘遊戲遊戲
- 優化-mysql子查詢索引失效問題解決優化MySql索引
- exists與in子查詢優化優化
- 程式碼日:剪刀石頭布 (RPS) 專案
- Bigkey問題的解決思路與方式探索
- 沒錢沒需求幹個錘子的數字化
- PAT-A1119 題解
- DFSS的解題思路
- 慢Sql優化思路SQL優化
- 小熊飛槳練習冊-03石頭剪刀布
- 數值最優化—優化問題的解(二)優化
- 「錘子」使用♂手冊
- 詳解SEO布詞以及網站排名優化技巧網站優化
- 結對-遊戲《石頭剪刀布》-專案進度遊戲
- JAVA效能優化思路探究Java優化
- 【Java效能優化思路方向】Java優化
- 解決方案製作思路
- Ajax跨越問題原因分析與解決思路
- 貼合生產的MySql優化思路MySql優化
- 淺談前端優化的幾個思路前端優化
- 拿個錘子看誰都是釘子
- Asp.Net線上預覽Word文件的解決方案與思路ASP.NET
- Oracle優化案例-儲存過程的優化思路(二十三)Oracle優化儲存過程
- next主題配置與優化優化
- vue面試題之vue專案的優化方案Vue面試題優化
- 錘子重磅新機下月釋出 錘子將帶來什麼驚喜呢?
- Canvas中的剪刀手講解與實戰——Android高階UICanvasAndroidUI
- MySQL查詢中分頁思路的優化BFMySql優化
- MongoDB索引與優化詳解MongoDB索引優化
- 【體系結構】與Checkpoint相關的問題解決思路
- Oceanbase讀寫分離方案探索與優化優化
- 前端優化方案前端優化
- DOM優化方案優化