C程式 PAT 1018 錘子剪刀布

2021-09-12 18:53:58 字數 1596 閱讀 2583

現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。

輸入第 1 行給出正整數 n(≤10​5​​),即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。c代表「錘子」、j代表「剪刀」、b代表「布」,第 1 個字母代表甲方,第 2 個代表乙方,中間有 1 個空格。

輸出第 1、2 行分別給出甲、乙的勝、平、負次數,數字間以 1 個空格分隔。第 3 行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有 1 個空格。如果解不唯一,則輸出按字母序最小的解。

思路:題目並不難,需要注意的是:如果解不唯一,則輸出按字母序最小的解。為方便統計勝利時的出拳,可規定為對應的整數,這種方法很多地方都會用到。

#include #include #include using namespace std;

int solve(char c1,char c2);

int key(char c);

int win(int *n);

int main( )

,b[3]=;//記錄甲乙勝利時的出拳

int a=0,b=0,c=0,n,i;//a,b,c記錄甲勝、平、負次數,甲勝乙負,甲平乙平

char c1,c2;

scanf("%d",&n);

for(i=0;i>c1>>c2;//不會接受空格 ,同時忽略回車

/* getchar();//接受回車

scanf("%c %c",&c1,&c2);//字元間有空格

*/ int k=solve(c1,c2);

if(k>0)//c1勝

else if(k==0)//平

else if(k<0)//c2勝

}printf("%d %d %d\n",a,b,c);

printf("%d %d %d\n",c,b,a);

win(a);

printf(" ");

win(b);

return 0;

}int solve(char c1,char c2)

int key(char c)

int win(int *n) }

//之前已經規定bcj值

if(y==0)

printf("b");

if(y==1)

printf("c");

if(y==2)

printf("j");

return 0;

}

PAT 1018 錘子剪刀布

現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...

PAT1018錘子剪刀布

現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...

PAT 1018 錘子剪刀布

現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...