猜拳问题
运用了switch的方法实现了猜拳问题的 积分计算
#includeusing 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; }
下一步开辟二维数组进行优化
完成优化
#includeusing 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; }
其中输入输出也可以用函数封装