官方题解|欢乐赛#37 T6
2025-01-08 14:40:34
发布于:浙江
4阅读
0回复
0点赞
T6
本题考查模拟能力,枚举上下左右的时候注意数组不要越界哈,可以采用方向数组+check
函数的写法,像极了写搜索, 0变成 1,1 变成 0 可以直接异或 1 来运算。
#include <bits/stdc++.h>
using namespace std;
const int N = 5;
int a[N][N], ans[N][N], n, m, k;
int dx[] = {1, -1, 0, 0, 0}, dy[] = {0, 0, 1, -1, 0};
bool check(int x, int y){
return x >= 1 && x <= 3 && y >= 1 && y <= 3;
}
int main(){
for(int i = 1; i <= 3; i ++ )
for(int j = 1; j <= 3; j ++ )
cin >> a[i][j];
for(int i = 1; i <= 3; i ++ )
for(int j = 1; j <= 3; j ++ )
ans[i][j] = 1;
for(int i = 1; i <= 3; i ++ ){
for(int j = 1; j <= 3; j ++ ){
while(a[i][j] -- ){
for(int k = 0; k < 5; k ++ ){
if(check(i + dx[k], j + dy[k])) ans[i + dx[k]][j + dy[k]] ^= 1;
}
}
}
}
for(int i = 1; i <= 3; i ++ ){
for(int j = 1; j <= 3; j ++ ){
cout << ans[i][j];
}
cout << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个