欢乐赛#36 T6题解
2025-01-07 19:37:21
发布于:北京
10阅读
0回复
0点赞
T6:
首先我们要定义 3 × 3 的矩阵 g
,表示每个灯的按压次数。
然后创建一个 3 × 3 的数组 r
,初始时每个灯的状态为 1
(即灯是开启的)。
对于每个灯,计算它和其上下左右相邻灯的按压次数之和,若该和为奇数,则灯的状态变为关闭(0);若该和为偶数,则灯的状态保持开启(1)。
C++代码:
#include<iostream>
using namespace std;
int main() {
int g[3][3];
int r[3][3] = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}};
// 读取每个灯的按下次数
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cin >> g[i][j];
}
}
// 遍历每个灯的位置
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
int p = g[i][j];
// 相加与当前位置相邻的灯的按压次数
if (i > 0) p += g[i - 1][j];
if (i < 2) p += g[i + 1][j];
if (j > 0) p += g[i][j - 1];
if (j < 2) p += g[i][j + 1];
r[i][j] = (p % 2 == 0) ? 1 : 0; // 三目运算符,偶数次按下为开,奇数次按下为关闭
}
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cout << r[i][j];
}
cout << endl;
}
return 0;
}
Python代码:
g = []
for i in range(3):
t = list(map(int, input().split()))
g.append(t)
# 相加与当前位置相邻的灯的按压次数
r = [[1,1,1],[1,1,1],[1,1,1]]
for i in range(3):
for j in range(3):
p = g[i][j]
if i > 0:
p += g[i - 1][j]
if i < 2:
p += g[i + 1][j]
if j > 0:
p += g[i][j - 1]
if j < 2:
p += g[i][j + 1]
if p % 2:
r[i][j] = 0
else:
r[i][j] = 1
for i in range(3):
for j in range(3):
print(r[i][j], end='')
print()
这里空空如也
有帮助,赞一个