PAT BASIC 1018 锤子剪刀布

来源:互联网 发布:电脑提示usb端口有电涌 编辑:程序博客网 时间:2024/05/21 09:08

思路:

这是一个繁杂的纯粹模拟题,甚至算法里面连循环都不用,唯一的for语句是因为要处理n次。

我选择使用两个嵌套的switch语句来模拟每一种情况,然后把该记录的东西都记录下来,也没有什么边界情况需要考虑,仔细。

代码:

#include<iostream>using namespace std;int num[3] = { 0 };int jia[3] = { 0 }, yi[3] = { 0 };char str[3] = { 'B', 'C', 'J' };int main(){  char a, b;  int n, i, max = 0;  cin >> n;  for (i = 0; i < n; i++)  {    cin >> a >> b;    switch (a)    {    case 'B':      switch (b)      {      case 'B':        num[1]++;        break;      case 'C':        num[0]++;        jia[0]++;        break;      case 'J':        num[2]++;        yi[2]++;        break;      default:        break;      }      break;    case 'C':      switch (b)      {      case 'B':        num[2]++;        yi[0]++;        break;      case 'C':        num[1]++;        break;      case 'J':        num[0]++;        jia[1]++;        break;      default:        break;      }      break;    case 'J':      switch (b)      {      case 'B':        num[0]++;        jia[2]++;        break;      case 'C':        num[2]++;        yi[1]++;        break;      case 'J':        num[1]++;        break;      default:        break;      }      break;    default:      break;    }  }  cout << num[0] << " " << num[1] << " " << num[2] << "\n";  cout << num[2] << " " << num[1] << " " << num[0] << "\n";  max = 0;  if (jia[1] > jia[max])    max = 1;  if (jia[2] > jia[max])    max = 2;  cout << str[max] << " ";  max = 0;  if (yi[1] > yi[max])    max = 1;  if (yi[2] > yi[max])    max = 2;  cout << str[max];  //while (1)  //{  //}  return 0;}
0 0
原创粉丝点击