UVa 11520 填充正方形

原创 2013年12月08日 23:00:23

In this problem, you have to draw a square using uppercase English Alphabets.

To be more precise, you will be given a square grid with some empty blocks and others already filled for you with some letters to make your task easier. You have to insert characters in every empty cell so that the whole grid is filled with alphabets. In doing so you have to meet the following rules:

 

  1. Make sure no adjacent cells contain the same letter; two cells are adjacent if they share a common edge.  
  2. There could be many ways to fill the grid. You have to ensure you make the lexicographically smallest one. Here, two grids are checked in row major order when comparing lexicographically.

 

Input
The first line of input will contain an integer that will determine the number of test cases. Each case starts with an integer n( n<=10 ), that represents the dimension of the grid. The next n lines will contain n characters each. Every cell of the grid is either a ‘.’ or a letter from [A, Z]. Here a ‘.’ Represents an empty cell.

 

Output
For each case, first output Case #: ( # replaced by case number ) and in the next n lines output the input matrix with the empty cells filled heeding the rules above.
 
Sample Input                       Output for Sample Input  

2

3

...

...

...

3

...

A..

... 

Case 1:

ABA

BAB

ABA

Case 2:

BAB

ABA

BAB



题意:给出一个填有大写字母的正方形矩阵,要求在剩余空格内填上大写字母使得每个字母相邻位置不同,有多种解时,字典序要求最小的一个。

思路:直接从A开始遍历即可,字典序最小从A开始遍历到Z时肯定为最小。

#include <iostream>
using namespace std;

#define MAXN 15

char grid[MAXN][MAXN];

int main()
{
	int T, n;
	cin>>T;
	int cas = 1;
	for (int k = 0; k < T; k++)
	{
		cin>>n;
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				cin>>grid[i][j];


		for (i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				if (grid[i][j] == '.')
				{
					for (char ch = 'A'; ch <= 'Z'; ch++)//小到大
					{
						int flag = true;
						if (i > 0 && grid[i - 1][j] == ch) flag = false;
						if (i < n - 1 && grid[i + 1][j] == ch) flag = false;
						if (j > 0 && grid[i][j - 1] == ch) flag = false;
						if (j < n - 1 && grid[i][j + 1] == ch) flag = false;
						if (flag) 
						{
							grid[i][j] = ch;
							break;
						}
					}
				}
		
		printf("Case %d:\n", cas ++);
		for (i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
				cout<<grid[i][j];
			cout<<endl;

		}
		
	}
	return 0;
}


Uva 11520填充正方形

#include using namespace std; char map[15][15]; int n; char min_A(int i,int j) { char a='A'; int f...
  • liang5630
  • liang5630
  • 2012年11月18日 13:41
  • 851

水题(填充正方形,uva 11520)

大水题,但自己却调了很久代码才过样例,因为一个下标搞错,然后debug时又找错了bug,改来改去,又把对的改成错的了。 以后写代码时要仔细点,第一次写就好好注意细节,考虑清楚,而且尽量不要出现手误。...
  • xl2015190026
  • xl2015190026
  • 2016年10月24日 11:16
  • 93

uva11520(贪心)

题意: 有一个n*n的方阵,填充大写字母,有一个要求就是每一个位置和上下左右都不能一样,输入一个方阵,'.'的位置要你填充的,要求字典序最小; 思路: 挺水的一道题; 从第一个位置开始...
  • yeyeyeguoguo
  • yeyeyeguoguo
  • 2015年01月29日 13:01
  • 401

UVa 11520 Fill the Square 填充正方形

题意:给定一个n*n的正方形,其中某些格子填写有大写字母。要求用大写字母填满其他的格子,使得任意两个相邻格子大写字母不同,并且整个正方形按照从上到下,从左到右将字母写成一串的字典序最小。 ...
  • FirstLucker
  • FirstLucker
  • 2015年07月04日 06:06
  • 334

UVa 11520 - Fill the Square (填充正方形)

Fill the Square Input: Standard Input Output: Standard Output   In this problem, you have to draw...
  • u010829118
  • u010829118
  • 2013年11月25日 18:40
  • 560

例题1.14 填充正方形 Fill the Square UVA - 11520 搜索

传送门 题目大意:有一个n*n的表格,有的已经填充了大写字母,你要吧所有的空格子都填上大写字母,要求有公共边的格子里字母不能相同,如果答案有多个,按照从上到下,从左到右的字典序最小的输出。 解题思...
  • lcuwb
  • lcuwb
  • 2017年08月13日 15:10
  • 109

填充正方形(Fill the Square)

Fill the Square Input: Standard Input Output: Standard Output   In this problem, you have to draw...
  • Sharing_Li
  • Sharing_Li
  • 2013年06月29日 16:12
  • 739

uva201正方形squares

背景:weong在格式和输出顺序上。注意读题,是从小到大输出,而不是从大到小输出,还有注意看输出格式,比较麻烦。 思路:就是用两个输出分别模拟出正方形的横边和竖边,然后一个一个枚举就好了。 反思:为了...
  • qiweigo
  • qiweigo
  • 2015年02月04日 16:57
  • 1439

UVa 11520

#include #include using namespace std; int n , t; char a[20][20]; int main() { ...
  • ouqingliang
  • ouqingliang
  • 2016年06月16日 13:54
  • 169

uva 11520

题意:有一个n×n的矩阵,矩阵元素有'.'和大写字母,要求把'.'全部替换为大写字母使每个元素的上下左右的元素和自己不相同,且从左到右从上到下字典序最小,输出矩阵。 题解:n最大10,可以暴力,因为...
  • u013392752
  • u013392752
  • 2015年01月29日 17:44
  • 506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 11520 填充正方形
举报原因:
原因补充:

(最多只允许输入30个字)