#include<cstdio>
#include<cstring>
char g[11][11];
int n;
int judge(int x,int y,char c)
{
if(g[x+1][y]==c&&x<n-1)
return 0;
if(g[x-1][y]==c&&x>0)
return 0;
if(g[x][y+1]==c&&y<n-1)
return 0;
if(g[x][y-1]==c&&y>0)
return 0;
return 1;
}
int main()
{
int t,count=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%s",g[i]);
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(g[i][j]=='.')
{
for(char c = 'A'; c<='Z'; c++)
if(judge(i,j,c))
{
g[i][j] = c;
break;
}
}
printf("Case %d:\n",++count);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
printf("%c",g[i][j]);
printf("\n");
}
}
return 0;
}
#include<cstring>
char g[11][11];
int n;
int judge(int x,int y,char c)
{
if(g[x+1][y]==c&&x<n-1)
return 0;
if(g[x-1][y]==c&&x>0)
return 0;
if(g[x][y+1]==c&&y<n-1)
return 0;
if(g[x][y-1]==c&&y>0)
return 0;
return 1;
}
int main()
{
int t,count=0;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%s",g[i]);
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(g[i][j]=='.')
{
for(char c = 'A'; c<='Z'; c++)
if(judge(i,j,c))
{
g[i][j] = c;
break;
}
}
printf("Case %d:\n",++count);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
printf("%c",g[i][j]);
printf("\n");
}
}
return 0;
}
C++迷宫填充算法
本文介绍了一个使用C++实现的迷宫填充算法,通过判断周围已填充字符来决定当前位置的填充字符,确保相邻位置不出现重复的大写字母。该算法适用于解决二维网格中字符填充的问题。
132

被折叠的 条评论
为什么被折叠?



