G - Maze
题目:

思路:
在“.”的位置插入k个“X”保证所有“.’连贯;
代码实现:
#include<iostream>
#include<stdio.h>
using namespace std;
char Map[510][510];
bool book[510][510];
int n,m,k;
void dfs(int x,int y)
{
if(x<0||x>=n||y<0||y>=m) return;
if(Map[x][y]!='.'||book[x][y]==1) return ;
book[x][y]=1;
for(int i=1;i<=4;i++)
{
if(i==1) dfs(x+1,y);
if(i==2) dfs(x-1,y);
if(i==3) dfs(x,y+1);
if(i==4) dfs(x,y-1);
}//对四个方向进行遍历
//如果四个方向都走不通
if(k!=0)
Map[x][y]='X',k--;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;++i)
scanf("%s",Map[i]);
for(int i=0;i<n;++i)
{
for(int j=0;j<m;j++)
{
dfs(i,j);
if(k==0) break;
}
if(k==0) break;
}
for(int i=0;i<n;i++)
puts(Map[i]);
return 0;
}

浙公网安备 33010602011771号