您的位置:首页 > 其它

UVA 11520 填充正方形

2016-07-05 20:00 197 查看
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2515
http://7xjob4.com1.z0.glb.clouddn.com/c6a2a6f54f5a6c2cae2c82df2ec552f7
题意:填已有字母的格子,使相邻格子字母不同,使字典序尽量小

思路:从小到大排,检验是否可行

#include <bits/stdc++.h>
using namespace std;

int n;
char grid[15][15];

int main()
{
int T,i,j,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",grid[i]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(grid[i][j]=='.')
{
for(char ch='A';ch<='Z';ch++)
{
bool flg=true;
if(i-1>=0 && grid[i-1][j]==ch)  flg=false;
if(i+1<n && grid[i+1][j]==ch)   flg=false;
if(j-1>=0 && grid[i][j-1]==ch)  flg=false;
if(j+1<n && grid[i][j+1]==ch)   flg=false;
if(flg)
{
grid[i][j]=ch;
break;
}
}
}
}
}

printf("Case %d:\n",cas++);
for(i=0;i<n;i++)
{
printf("%s\n",grid[i]);
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: