P1328 生活大爆炸版石头剪刀布 解题思路
Kawaii_qiuw · · 题解
题面很好理解,不再赘述。
解题思路
主要分为
Step one 储存游戏结果
int n, a, b, p[205],q[205], x, y;
int k[5][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}};
Step two 输入
cin >> n >> a >> b;
for (int i = 0; i < a; i++)
cin >> p[i];
for (int i = 0; i < b; i++)
cin >> q[i];
Step three 加减
for (int i = 0; i < n; i++)
{
x += k[p[i % a]][q[i % b]];
y += k[q[i % b]][p[i % a]];
}
Step four 输出
cout << x << ' ' << y;
看到了吗,我们把题目拆解成四个部分,每个部分都很简单、很基础。这题本身就不是很难,但如果遇到难题,思路也是将它拆解成几个你会写的代码,所谓的“难题”也就不难了,这和做数学题一个道理。
代码
#include <iostream>
using namespace std;
int n, a, b, p[205],q[205], x, y;
int k[5][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 >> n >> a >> b;
for (int i = 0; i < a; i++)
cin >> p[i];
for (int i = 0; i < b; i++)
cin >> q[i];
for (int i = 0; i < n; i++) {
x += k[p[i % a]][q[i % b]];
y += k[q[i % b]][p[i % a]];
}
cout << x << ' ' << y;
return 0;
}
完结撒花。