生活大爆炸版石头剪刀布
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生活大爆炸版石头剪刀布相关的知识,希望对你有一定的参考价值。
原题: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 }
以上是关于生活大爆炸版石头剪刀布的主要内容,如果未能解决你的问题,请参考以下文章