题目链接:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=27&page=show_problem&problem=2515
题目大意:
给一个矩阵,要求在上面填上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) { }