生活大爆炸版石头剪刀布

原题:https://www.luogu.org/problem/show?pid=1328#sub

一道大型模拟。虽然有简化做法但是数据量太小,几乎用不到。

看到出拳是有周期性的,想到取模,然后就是判断了。

我用的方法是case套case,用scorea和scoreb记录成绩。

一定要注意对应关系,谁赢谁谁得分,写的时候最好先在纸上列个表,理清思路后好写一些。

(特别巧的是,去年此时我在codevs上用pascalAC了这道题。)

(当时我用pascal也是这样做的。。。也是使用case语句)

AC代码:

    

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstring>
  4 #include <cctype>
  5 #define maxn 233
  6 using namespace std;
  7 int main(){
  8     int n,na,nb;
  9     int a[maxn],b[maxn];
 10     int scorea,scoreb;
 11     cin >> n >> na >> nb;
 12     for (int i=1;i<=na;i++)
 13         cin >> a[i];
 14     for (int i=1;i<=nb;i++)
 15         cin >> b[i];
 16     int i=0;
 17     int j=0;
 18     for (int t=1;t<=n;t++){
 19         i=i%na+1;
 20         j=j%nb+1;
 21         switch(a[i]){
 22             case 0:
 23                 switch(b[j]){
 24                     case 1:
 25                         scoreb++;
 26                         break;
 27                     case 2:
 28                         scorea++;
 29                         break;
 30                     case 3:
 31                         scorea++;
 32                         break;
 33                        case 4:
 34                         scoreb++;
 35                         break;
 36                 };
 37                 break;
 38             
 39             case 1:
 40                 switch(b[j]){
 41                     case 0:
 42                         scorea++;
 43                         break;
 44                     case 2:
 45                         scoreb++;
 46                         break;
 47                     case 3:
 48                         scorea++;
 49                         break;
 50                     case 4:
 51                         scoreb++;
 52                         break;
 53                 };
 54                 break;
 55 
 56             case 2:
 57                 switch(b[j]){
 58                     case 0:
 59                         scoreb++;
 60                         break;
 61                     case 1:
 62                         scorea++;
 63                         break;
 64                     case 3:
 65                         scoreb++;
 66                         break;
 67                     case 4:
 68                         scorea++;
 69                         break;
 70                 };
 71                 break;
 72 
 73         
 74             case 3:
 75                 switch(b[j]){
 76                     case 0:
 77                         scoreb++;
 78                         break;
 79                     case 1:
 80                         scoreb++;
 81                         break;
 82                     case 2:
 83                         scorea++;
 84                         break;
 85                     case 4:
 86                         scorea++;
 87                         break;
 88                 };
 89                 break;
 90         
 91             case 4:
 92                 switch(b[j]){
 93                     case 0:
 94                         scorea++;
 95                         break;
 96                     case 1:
 97                         scorea++;
 98                         break;
 99                     case 2:
100                         scoreb++;
101                         break;
102                     case 3:
103                         scoreb++;
104                         break;
105                 };
106                 break;
107         }
108         
109     }
110     cout << scorea << " " << scoreb << endl;
111     return 0;
112 }

    

原文地址:https://www.cnblogs.com/OIerShawnZhou/p/7455174.html