1018. 锤子剪刀布
来源:互联网 发布:东莞市住宅成交数据 编辑:程序博客网 时间:2024/04/30 09:19
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出格式:
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
输入样例:
算法:10C JJ BC BB BB CC CC BJ BB CJ J输出样例:
5 3 22 3 5B B
- 算法开始。
- 初始化整型变量总数、整型变量临时变量为零、字符甲、字符乙、整形变量甲胜利次数为零、甲剪刀胜利次数为零、甲锤子胜利次数为零、甲布胜利次数为零、甲平局次数为零、乙胜利次数为零、乙剪刀胜利次数为零、乙锤子胜利次数为零、乙布胜利次数为零。
- 读取剪刀锤子布次数,存储于总数。
- 如果临时变量大于等于总数,则跳到第七步。
- 读取交锋信息,存储于字符甲和字符乙。
- 判断字符甲和字符乙:如果字符甲等于字符乙,则甲平局次数加一;如果字符甲是剪刀,字符乙是布或者字符甲是锤子,字符乙是剪刀或者字符甲是布,字符乙是锤子,那么甲胜利次数加一,甲剪刀或锤子或布胜利次数加一;否则乙胜利次数加一,乙剪刀或锤子或布胜利次数加一。回到第四句。
- 输出甲的胜利次数、平局次数、输的次数,乙的胜利次数、平局次数、输的次数。甲什么手势胜利次数最多就输出什么手势,如果次数最多手势不唯一就输出字母序小的手势。对乙也一样。(甲胜利次数等于乙输的次数。甲平局次数等于乙平局次数。甲失败次数等于乙胜利次数。)
- 算法结束。
注意:由于我们需要读取缓存区的字符,所以需要清空缓存区,以读取正确的字符。不推荐使用fflush(stdin)、setbuf(stdin. NULL),这两个函数在Xcode环境下达不到我们想要的结果。
下列代码可在PAT和Xcode 上正确工作
#include <stdio.h>char most_gesture(int j, int c, int b);int main(int argc, const char * argv[]) { int n, i, jia_sheng=0, jia_ping=0, jia_j=0, jia_c=0, jia_b=0, yi_sheng=0, yi_j=0, yi_c=0, yi_b=0; char jia, yi; char jia_zui, yi_zui; scanf("%d", &n); for(i=0; i<n; i++){ getchar(); scanf("%c %c", &jia, &yi); if(jia==yi){ jia_ping++; } else if(((jia=='C')&&(yi=='J'))||((jia=='J')&&(yi=='B'))||((jia=='B')&&(yi=='C'))){ jia_sheng++; switch(jia){ case 'C': jia_c++; break; case 'J': jia_j++; break; case 'B': jia_b++; break; default: break; } } else{ yi_sheng++; switch(yi){ case 'C': yi_c++; break; case 'J': yi_j++; break; case 'B': yi_b++; break; default: break; } } } jia_zui=most_gesture(jia_j, jia_c, jia_b); yi_zui=most_gesture(yi_j, yi_c, yi_b); printf("%d %d %d\n%d %d %d\n%c %c", jia_sheng, jia_ping, yi_sheng , yi_sheng, jia_ping, jia_sheng , jia_zui, yi_zui); return 0;}char most_gesture(int j, int c, int b){ if(j>c){ if(j>b){ return 'J'; } else{ return 'B'; } } else if(j==c){ if(j>b){ return 'C'; } else{ return 'B'; } } else{ if(c<=b){ return 'B'; } else{ return 'C'; } }}
0 0
- 1018. 锤子剪刀布
- 1018.锤子剪刀布
- 1018. 锤子剪刀布
- 1018. 锤子剪刀布
- 1018. 锤子剪刀布
- 1018. 锤子剪刀布
- 1018. 锤子剪刀布
- 1018.锤子剪刀布
- 1018. 锤子剪刀布
- 1018. 锤子剪刀布 (20)
- PAT 1018. 锤子剪刀布
- 1018. 锤子剪刀布 (20)
- 1018. 锤子剪刀布 (20)
- 1018. 锤子剪刀布 (20)
- 1018. 锤子剪刀布 (20)
- 1018. 锤子剪刀布 (20)
- PAT 1018. 锤子剪刀布
- 1018. 锤子剪刀布 (20)
- python 使用requests第三方库自动登陆新浪微博
- linux给普通用户添加root权限
- Longest Increasing Path in a Matrix
- 细数JDK里的设计模式(转)
- Java 多线程
- 1018. 锤子剪刀布
- Java的多线程之基础篇
- c#之剪刀石头布
- c#之剪刀石头布
- c#之剪刀石头布
- get与post提交方式的区别
- 教程Roll-a-ball tutorialMoving the Player 解读
- hihocoder之01背包
- html5在线画板