题目链接:生活大爆炸版石头剪刀布
重点知识:二维数组算得分
若题目中有一堆条件让你去判断谁得分,可以采用二维数组算得分的方式。
比如:0代表石头,1代表剪刀,则若A出0,B出1,A得分为1,B得分为0。用数组表示成
int score[][2] = {{1,0},{0,1}};
下标代表人物出的手势,值代表得分(具体是谁的得分由你制定规则)
score(0,1)代表A出了拳头,B出了剪刀。A得分为1
score(1,0)代表A出了剪刀,B出了石头,A得分为0.
(当然反过来也行)
AC代码
#include <iostream>
using namespace std;
int A[210], B[210];
int m,t1,t2;
int score[][5] = { {0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0} };
int main()
{
cin >> m>>t1>>t2;
for (int i = 0; i < t1; i++) cin >> A[i];
for (int i = 0; i < t2; i++) cin >> B[i];
int a = 0, b = 0, score1 = 0, score2 = 0;
while (m--)
{
score1 += score[A[a]][B[b]];
score2 += score[B[b]][A[a]];
a = (a + 1) % t1;
b = (b + 1) % t2;
}
cout << score1 << " " << score2 << endl;
}