Uva 11520 填充正方形
2017-04-12 22:04
447 查看
题目链接:https://vjudge.net/problem/UVA-11520
题意:
给定一个n*n的正方形,把剩下的格子中填满大写字母,任意两个相邻的格子字母不同,要求最后字典序最小;
分析:
第一想法回溯啊,当然是不对的,100个点回溯会死人的!
其实,可以发现,每个点不可能说,由于前面的决策,后来不能满足了,相邻的点有4个,我有26个英文字母。
View Code
题意:
给定一个n*n的正方形,把剩下的格子中填满大写字母,任意两个相邻的格子字母不同,要求最后字典序最小;
分析:
第一想法回溯啊,当然是不对的,100个点回溯会死人的!
其实,可以发现,每个点不可能说,由于前面的决策,后来不能满足了,相邻的点有4个,我有26个英文字母。
#include <bits/stdc++.h> using namespace std; const int maxn = 10 + 5; int n; char maps[maxn][maxn]; int main() { int t; scanf("%d",&t); int kase = 1; while(t--) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%s",maps[i]); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(maps[i][j]=='.') { for(char ch='A';ch<='Z';ch++) { bool ok = true; if(i>0&&maps[i-1][j]==ch) ok = false; if(i<n-1&&maps[i+1][j]==ch) ok = false; if(j>0&&maps[i][j-1]==ch) ok = false; if(j<n-1&&maps[i][j+1]==ch) ok = false; if(ok) {maps[i][j] = ch;break;} } } } } printf("Case %d:\n",kase++); for(int i=0;i<n;i++) printf("%s\n",maps[i]); } return 0; }
View Code
相关文章推荐
- 例题1.14 填充正方形 UVa11520
- UVa 11520 Fill the Square 填充正方形
- UVa 11520 - Fill the Square (填充正方形)
- 水题(填充正方形,uva 11520)
- UVA 11520 填充正方形
- UVa 11520 填充正方形
- uva11520 填充正方形
- UVa 11520 - Fill the Square (填充正方形)
- 例题1.14 填充正方形 Fill the Square UVA - 11520 搜索
- UVA11520填充正方形
- UVA11520填充正方形
- UVa 11520 Fill the Square 填充正方形
- UVa 11520 填充正方形
- uva 11520 Fill the Square(枚举)
- uva 201 数正方形数
- UVA1973*3用七个碎片拼成正方形,正方体的旋转和平移,即矩阵变换
- uva201正方形squares
- uva 11520 - Fill the Square
- 习题4-2 正方形 UVa201
- UVA 11520 Fill the Square