运用了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;
}

其中输入输出也可以用函数封装

 

Posted on 2022-04-12 15:07  鱼忆七秒瓶中沙  阅读(45)  评论(0)    收藏  举报