uva 11520

来源:互联网 发布:es5与javascript 编辑:程序博客网 时间:2024/05/18 09:18

题意:有一个n×n的矩阵,矩阵元素有'.'和大写字母,要求把'.'全部替换为大写字母使每个元素的上下左右的元素和自己不相同,且从左到右从上到下字典序最小,输出矩阵。

题解:n最大10,可以暴力,因为要从左到右从上到下字典序最小,所以就按这个顺序枚举字母填进去就可以了。


#include <stdio.h>#include <string.h>const int N = 15;char grid[N][N];int n;int main() {int t, cas = 1;scanf("%d", &t);while (t--) {scanf("%d", &n);for (int i = 0; i < n; i++)scanf("%s", grid[i]);for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)if (grid[i][j] == '.') {for (char k = 'A'; k <= 'Z'; k++) {int flag = 1;if (i > 0 && grid[i - 1][j] == k)flag = 0;else if (j > 0 && grid[i][j - 1] == k)flag = 0;else if (i < n - 1 && grid[i + 1][j] == k)flag = 0;else if (j < n - 1 && grid[i][j + 1] == k)flag = 0;if (flag) {grid[i][j] = k;break;}}}printf("Case %d:\n", cas++);for (int i = 0; i < n; i++)puts(grid[i]);}return 0;}

0 0
原创粉丝点击