求字典序最小解+贪心
来源:互联网 发布:esp8266mod数据手册 编辑:程序博客网 时间:2024/05/17 17:54
Problem A
Fill the Square
Input: Standard Input
Output: Standard Output
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:
- Make sure no adjacent cells contain the same letter; two cells are adjacent if they share a common edge.
- 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.
OutputFor 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到Z一个一个试,是字典序最小的,不用担心这样下去最后不符合怎么办,因为每一个格子只需要考虑上下左右四个格子,有26个字母,肯定可以满足。
下面是代码:
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int MAXN=15;char grid[MAXN][MAXN];int N;int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { 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++) { bool ok=true; if(i>0&&grid[i-1][j]==k) ok=false; if(i<N-1&&grid[i+1][j]==k)ok=false; if(j>0&&grid[i][j-1]==k) ok=false; if(j<N-1&&grid[i][j+1]==k)ok=false; if(ok) { grid[i][j]=k; break; } } } } } printf("Case %d:\n",cas); for(int i=0;i<N;i++) { cout<<grid[i]<<endl; } } return 0;}
- 求字典序最小解+贪心
- HDU 1814 2-sat 求字典序最小解
- UVALive 6198 A Terribly Grimm Problem 二分匹配 求字典序最小解
- URAL 1949 The Best Picture in the Galaxy 二分匹配 求字典序最小解
- 确定比赛名次 hdu 拓扑输出字典序最小解
- hdoj 4857 逃生 【拓扑排序 输出字典序最小解】
- 【2-SAT字典序最小解】HDU1814[Peaceful Commission]题解
- poj 3715 最小覆盖集,并且输出字典序最小解
- HDU 1814 Peaceful Commission(2-sat 输出字典序最小解 )
- hdoj 1814 Peaceful Commission 【2-sat暴力染色 求解字典序最小解】
- hdu 1814 和平委员会(2-sat入门题 字典序最小解)
- [2-SAT 字典序最小解 暴力dfs 模板题] HDU 1814 Peaceful Commission
- HDU 1814:Peaceful Commission(2-SAT的字典序最小解)
- poj1061青蛙的约会【扩展欧几里得求最小解】
- hdu_1385 逆向SPFA求字典序最小最短路
- CodeForces Div124-1 hrbust 1474 哈理工oj 求字典序最大的子串【贪心】
- 暴力求字典序
- poj3617字典序问题【贪心】
- tomcat load-on-startup
- 创建一门新的编程语言-Flex&Bison-(4)-什么是jit
- 电路中7个常用接口类型之要点说明
- 常用元件封装
- 2013年终总结----人生的一个小转折
- 求字典序最小解+贪心
- 键盘输入字符串、左右移方向和移位个数打印结果
- UVA 669 - Defragment(dfs)
- 《程序设计语言-实践之路》读后杂谈
- 友元类和函数
- Python Programing startup
- 【算法导论】地图染色算法
- 实现简单天气预报
- ubuntu 10.04 3D特效