运用了switch的方法实现了猜拳问题的 积分计算
#include<iostream>
using namespace std;
//题目链接 https://uoj.ac/problem/15
void judge(int a, int b, int& A, int& B) {
switch (a) {
case 0:
if (b == 1)
B++;
else if (b == 2)
A++;
else if (b == 3)
A++;
else if (b == 4)
B++;
break;
case 1:
if (b == 0)
A++;
else if (b == 2)
B++;
else if (b == 3)
A++;
else if (b == 4)
B++;
break;
case 2:
if (b == 0)
B++;
else if (b == 1)
A++;
else if (b == 3)
B++;
else if (b == 4)
A++;
break;
case 3:
if (b == 0)
B++;
else if (b == 1)
B++;
else if (b == 2)
A++;
else if (b == 4)
A++;
break;
case 4:
if (b == 0)
A++;
else if (b == 1)
A++;
else if (b == 2)
B++;
else if (b == 3)
B++;
break;
}
}
int main() {
int n, na, nb;
cin >> n >> na >> nb;
int a[200], b[200];
for (int i = 0; i < na; i++)
cin >> a[i];
for (int i = 0; i < nb; i++)
cin >> b[i];
int A = 0, B = 0;
for (int i = 0; i < n; i++) {
judge(a[i % (na)], b[i % (nb)], A, B);
}
cout << A << " " << B;
return 0;
}
下一步开辟二维数组进行优化
完成优化
#include<iostream> using namespace std; //开辟二维数组 //题目链接 https://uoj.ac/problem/15 int m[5][5] = { 0,-1,1,1,-1, 1,0,-1,1,-1, -1,1,0,-1,1, -1,-1,1,0,1, 1,1,-1,-1,0 }; void judge(int a, int b, int& A, int& B) { switch (m[a][b]) { case 0: break; case 1: A++; break; case -1: B++; break; } } int main() { int n, na, nb; cin >> n >> na >> nb; int a[200], b[200]; for (int i = 0; i < na; i++) cin >> a[i]; for (int i = 0; i < nb; i++) cin >> b[i]; int A = 0, B = 0; for (int i = 0; i < n; i++) { judge(a[i % (na)], b[i % (nb)], A, B); } cout << A << " " << B; return 0; }
其中输入输出也可以用函数封装
浙公网安备 33010602011771号