题目链接:
题目大意:
给一个矩阵,要求在上面填上A到Z的字母,使得每个格子的字母与其相邻格子的字母不同。
代码:
#include "uva11520.h"
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int maxn = 10 + 5;
char matrix[maxn][maxn];
int n;
char fill(int row, int col){
for(int ch='A'; ch<='Z'; ++ch){
if(ch != matrix[row][col-1] &&
ch != matrix[row][col+1] &&
ch != matrix[row+1][col] &&
ch != matrix[row-1][col]
)
return ch;
}
}
void solve(){
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; ++j)
if(matrix[i][j] == '.')
matrix[i][j] = fill(i,j);
for(int i=1; i<=n; ++i)
puts(matrix[i] + 1);
}
int main(){
int t, cas =1;
scanf("%d", &t);
while( t -- ){
printf("Case %d:\n", cas++);
scanf("%d", &n);
memset(matrix, 0, sizeof(matrix));
for(int i = 1; i <= n; ++i)
scanf("%c", matrix[i] + 1);
solve();
}
return 0;
}
uva11520::uva11520(void)
{
}
uva11520::~uva11520(void)
{
}