1018 锤子剪刀布 (20 分)
大家應該都會玩“錘子剪刀布”的游戲:兩人同時給出手勢,勝負規則如圖所示:
現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,并且給出雙方分別出什么手勢的勝算最大。
輸入格式:
輸入第 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 <stdio.h> #pragma warning (disable:4996) int main() {/*1.循環輸入2.4個數組分別通過條件判斷記錄信息,輸出*/int bookjia[3] = { 0 }, bookyi[3] = { 0 };int book1[500] = { 0 }, book2[500] = { 0 };int N;char jia, yi;scanf("%d", &N);for (int cnt = 0; cnt < N; cnt++) {getchar();scanf("%c %c", &jia, &yi);if (jia == 'C' && yi == 'J') {bookjia[0]++;bookyi[2]++;book1[(int)(jia)]++;}else if (jia == 'C' && yi == 'C') {bookjia[1]++;bookyi[1]++;}else if (jia == 'C' && yi == 'B') {bookjia[2]++;bookyi[0]++;book2[(int)(yi)]++;}else if (jia == 'J' && yi == 'C') {bookjia[2]++;bookyi[0]++;book2[(int)(yi)]++;}else if (jia == 'J' && yi == 'J') {bookjia[1]++;bookyi[1]++;}else if (jia == 'J' && yi == 'B') {bookjia[0]++;bookyi[2]++;book1[(int)(jia)]++;}else if (jia == 'B' && yi == 'C') {bookjia[0]++;bookyi[2]++;book1[(int)(jia)]++;}else if (jia == 'B' && yi == 'B') {bookjia[1]++;bookyi[1]++;}else if (jia == 'B' && yi == 'J') {bookjia[2]++;bookyi[0]++;book2[(int)(yi)]++;}//printf("********\n");}printf("%d %d %d\n", bookjia[0], bookjia[1], bookjia[2]);printf("%d %d %d\n", bookyi[0], bookyi[1], bookyi[2]);int max = (int)'B';for (int cnt = 0; cnt < 500; cnt++) {if (book1[cnt] > book1[max]) {max = cnt;}}printf("%c ", max);max = (int)'B';for (int cnt = 0; cnt < 500; cnt++) {if (book2[cnt] > book2[max]) {max = cnt;}}printf("%c", max);return 0; }?這題其實不難,就瘋狂寫條件判斷也行;
我踩過的坑:1.沒有用getchar(),這題我忘記考慮換行符的影響,因為%c會會將所有緩沖區中的單個字符進行輸入,也就表明了他是可以吸收換行符的,而我忘記了第一行也有個換行符,以及每一行輸入后面都有個換行符,需要我們將每一個換行符先吸收掉,才可以進入scanf的吸收環節;
2.找兩個最多贏的手勢是什么,我這里直接寫了個簡單的桶出來,因為考慮到字母序的問題,用桶就不用進行這一個判斷,然后我這里桶的條件原來是寫錯的,這里要注意循環比較的過程中,條件的比較我這里是數組內的值進行比較,我最開始寫錯了寫成了數組內的元素和max直接比較,導致我錯了
總結
以上是生活随笔為你收集整理的1018 锤子剪刀布 (20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1017 A除以B (20 分)(c语言
- 下一篇: 王爽汇编第九章学习笔记