3 条题解
-
1
依次处理每个颜色序号为
.的格子,从颜色1往后枚举到一个最小的不会重复的颜色#include<bits/stdc++.h> using namespace std; const int N = 710; char ch[N][N]; int main() { int h, w; cin >> h >> w; for (int i = 1; i <= h; i++) for (int j = 1; j <= w; j++) cin >> ch[i][j]; for (int i = 1; i <= h; i++) for (int j = 1; j <= w; j++) { if (ch[i][j] != '.') continue; int a = ch[i - 1][j] - '0', b = ch[i][j - 1] - '0', c = ch[i + 1][j] - '0', d = ch[i][j + 1] - '0'; int id = 1; while (id == a or id == b or id == c or id == d) id++; ch[i][j] = id + '0'; } for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) cout << ch[i][j]; cout << '\n'; } return 0; } -
1
#include<bits/stdc++.h> using namespace std; char a[910][910]; int main() { int n,m;cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(a[i][j]=='.') { if(a[i+1][j]!='1'&&a[i-1][j]!='1'&&a[i][j+1]!='1'&&a[i][j-1]!='1'){a[i][j]='1';continue;} if(a[i+1][j]!='2'&&a[i-1][j]!='2'&&a[i][j+1]!='2'&&a[i][j-1]!='2'){a[i][j]='2';continue;} if(a[i+1][j]!='3'&&a[i-1][j]!='3'&&a[i][j+1]!='3'&&a[i][j-1]!='3'){a[i][j]='3';continue;} if(a[i+1][j]!='4'&&a[i-1][j]!='4'&&a[i][j+1]!='4'&&a[i][j-1]!='4'){a[i][j]='4';continue;} if(a[i+1][j]!='5'&&a[i-1][j]!='5'&&a[i][j+1]!='5'&&a[i][j-1]!='5'){a[i][j]='5';continue;}//判断四周的方块 } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cout<<a[i][j]; } puts(""); } } -
0
#include <bits/stdc++.h> using namespace std; const int N = 705; constexpr int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; int n, m; char c[N][N]; int main() { cin >> n >> m; for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) cin >> c[i][j]; for (int i = 1; i <= n; ++i) for (int j = 1; j <= m; ++j) if (c[i][j] == '.') { set <int> s; for (int k = 0; k < 4; ++k) { int di = i + dir[k][0], dj = j + dir[k][1]; if (di && di <= n && dj && dj <= m && c[di][dj] != '.') s.insert(c[di][dj]); } for (int k = '1', flag = 0; k <= '5' && !flag; ++k) if (s.find(k) == s.end()) flag = 1, c[i][j] = k; } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) cout << c[i][j]; if (i < n) cout << '\n'; } return 0; }
- 1
信息
- ID
- 2510
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 8
- 标签
- 递交数
- 11
- 已通过
- 10
- 上传者