两个思路:
1,可以用一个二维数组制作成一个坐标图,一个坐标为玩家a的出拳数,另一个坐标为玩家b的出拳数,每一个具体坐标对应的数组值用0或1标识,每一种标识ansA和ansB对应操作
2,对玩家A的出拳数判定后判定玩家B的出拳数
这里使用2方法(打表式)
代码如下:
#include<iostream>
using namespace std;
#include<stdio.h>
int a[200], b[200];
int sum1 = 0; int sum2 = 0;
void fun0(int k)
{
if (b[k] == 2 || b[k] == 3 )
{
sum1 = sum1 + 1;
}
else if (b[k] == 1||b[k]==4)
{
sum2 = sum2 + 1;
}
}
void fun1(int k)
{
if (b[k] == 0 || b[k] == 3)
{
sum1 = sum1 + 1;
}
else if (b[k] == 2 || b[k] == 4)
{
sum2 = sum2 + 1;
}
}
void fun2(int k)
{
if (b[k] == 1 || b[k] == 4)
{
sum1 = sum1 + 1;
}
else if (b[k] == 0 || b[k] == 3)
{
sum2 = sum2 + 1;
}
}
void fun3(int k)
{
if (b[k] == 2 || b[k] == 4)
{
sum1 = sum1 + 1;
}
else if (b[k] == 0 || b[k] == 1)
{
sum2 = sum2 + 1;
}
}
void fun4(int k)
{
if (b[k] == 0 || b[k] == 1)
{
sum1 = sum1 + 1;
}
else if (b[k] == 2 || b[k] == 3)
{
sum2 = sum2 + 1;
}
}
void turn1(int k)
{
switch (a[k])
{
case 0:fun0(k); break;
case 1:fun1(k); break;
case 2:fun2(k); break;
case 3:fun3(k); break;
case 4:fun4(k); break;
default:
cout << "errpr";
break;
}
}
int main()
{
int n, t1, t2;
cin >> n >> t1 >> t2;
int* tem1 = new int[t1];
int* tem2 = new int[t2];
int i, j;
for (i = 0; i < t1; ++i)
{
cin >> tem1[i];
}
for (i = 0; i < t2; ++i)
{
cin >> tem2[i];
}
for (i = 0; i < n; ++i)
{
a[i] = tem1[i % t1];
}
for (i = 0; i < n; ++i)
{
b[i] = tem2[i % t2];
}
//初始化完毕,开始操作
for (j = 0; j < n; ++j)
{
turn1(j);
}
//操作结束,开始收割
cout<<sum1<<" "<<sum2;
delete[]tem1;
delete[]tem2;
}