PAT-B 1018. 锤子剪刀布 (20)
2017-02-09 16:32
417 查看
题目链接在此。
该题没有什么拐弯之处,只需要把题意实现即可。
我的做法是将输入的B、C、F字符转换成对应的ASCII码,以逃避用串比较函数来进行一些字符相等的判断。
此处需要注意的是,想要将一个字符转换成其ASCII码,只需要用字符-‘\0’(而不是‘0’)即可。
下面贴出我的AC代码:
《算法笔记上机训练实践指南》中的解法在代码的构造上显得更为巧妙,总体的算法思想并无二异,故此处不过多赘述。
该题没有什么拐弯之处,只需要把题意实现即可。
我的做法是将输入的B、C、F字符转换成对应的ASCII码,以逃避用串比较函数来进行一些字符相等的判断。
此处需要注意的是,想要将一个字符转换成其ASCII码,只需要用字符-‘\0’(而不是‘0’)即可。
下面贴出我的AC代码:
#include<stdio.h> #include<string.h> int main(){ int n; scanf("%d",&n); getchar(); char j,y; int jWinTimes = 0, yWinTimes = 0; //甲、乙获胜的次数 //甲乙两方每个手势获胜的次数 int jB = 0, jC = 0, jJ = 0; int yB = 0, yC = 0, yJ = 0; for(int i = 0 ; i < n; i++){ scanf("%c %c", &j, &y); if(i<n-1){ getchar(); } int jnum = j-'\0'; int ynum = y-'\0'; //统计甲获胜的情况 if(jnum == 66 && ynum == 67){ jB++; jWinTimes ++; }else if(jnum == 67 && ynum == 74){ jC++; jWinTimes++; } else if(jnum == 74 && ynum == 66){ jJ++; jWinTimes++; } //统计乙获胜的情况 if(jnum == 67 && ynum == 66){ yB++; yWinTimes++; } else if(jnum == 74 && ynum == 67){ yC++; yWinTimes++; } else if(jnum == 66 && ynum == 74){ yJ++; yWinTimes++; } } printf("%d %d %d\n",jWinTimes,n-jWinTimes-yWinTimes,yWinTimes); printf("%d %d %d\n",yWinTimes,n-jWinTimes-yWinTimes,jWinTimes); //拿到甲、乙获胜最多手势 int jmax = jB; char J = 'B'; if(jmax < jC){ jmax = jC; J = 'C'; } if(jmax < jJ){ jmax = jJ; J = 'J'; } int ymax = yB; char Y = 'B'; if(ymax < yC){ ymax = yC; Y = 'C'; } if(ymax < yJ){ ymax = yJ; Y = 'J'; } printf("%c %c\n",J,Y); return 0; }
《算法笔记上机训练实践指南》中的解法在代码的构造上显得更为巧妙,总体的算法思想并无二异,故此处不过多赘述。
相关文章推荐
- 1!+2!+3!+·····+10!
- GOF设计模式-开山篇
- redis通用key操作命令
- 同步、异步,阻塞、非阻塞的理解
- ini配置文件读写实现
- JAVA中的char类型
- ubuntu安装百度云客户端
- finish()和startActivity两种结束Activity的区别
- java常量
- Android编程——Touch 事件的分发和消费机制
- XenServer 6.5 安装
- 算法设计思想之动态规划
- 源码中transient的用途
- maven(1)------使用myeclipse构建maven项目
- C++ IDE环境
- JavaScript语法字面量
- MRP概览
- maven工程在eclipse中遇到的常见错误
- echarts3 地图只显示南沙群岛
- 每日小记 2017 2.9