Uva 11520 - Fill the Square

2014-11-24 02:39:52 · 作者: · 浏览: 1
题目大意:
给一个矩阵,要求在上面填上A到Z的字母,使得每个格子的字母与其相邻格子的字母不同。
代码:
#include "uva11520.h"  
#include  
#include  
#include  
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)  
{  
}