題目連結 http://zerojudge.tw/ShowProblem?problemid=d626
一個曾經困擾我很久還被我同學嗆:連通塊你都過了你還不會這題?
最後某天洗澡出來,秒想到該怎樣做
阿不就用DFS,從測資給定的點開始走訪,遇到+號就return嗎
我居然會被這東西搞這麼久嗚嗚嗚嗚嗚嗚
範例程式碼:
#include <stdio.h>
#include <string.h>
char map[110][110];
char inp[102];
int dfs(int i,int j)
{
if(map[i][j]=='+')
{
return;
}
map[i][j]='+';
dfs(i,j+1);
dfs(i+1,j);
dfs(i,j-1);
dfs(i-1,j);
}
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
memset(map,'+',sizeof(map));
int i,j;
for(i=1;i<=a;i++)
{
scanf("%s",inp);
for(j=1;j<=a;j++)
{
map[i][j]=inp[j-1];
}
}
int n,m;
scanf("%d%d",&n,&m);
dfs(n+1,m+1);
for(i=1;i<=a;i++)
{
for(j=1;j<=a;j++)
{
printf("%c",map[i][j]);
}
printf("\n");
}
}
return 0;
}