1. 程式人生 > >洛谷 - P1162 - 填塗顏色 - dfs - 圖案搜索

洛谷 - P1162 - 填塗顏色 - dfs - 圖案搜索

spa std 所有 n) names 簡單的 tps define .org

https://www.luogu.org/problemnew/show/P1162

在外面加一圈0把0連起來,然後把所有0換成2,再從(0,0)把連通的2全部改回來。

這也是一個判斷內外圈的好辦法。

簡單的搜索都不要寫廣搜。

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

int g[32][32];
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};

int n;

void dfs(int i,int j){
    //cout<<i<<" "<<j<<endl;
g[i][j]=0; for(int k=0;k<4;k++){ int x=i+dx[k]; int y=j+dy[k]; if(x>=0&&x<=n+1&&y>=0&&y<=n+1&&g[x][y]==2) dfs(x,y); } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf(
"%d",&g[i][j]); } } for(int i=0;i<=n+1;i++){ for(int j=0;j<=n+1;j++){ if(g[i][j]==0) g[i][j]=2; } } dfs(0,0); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ printf("%d%c",g[i][j]," \n"[j==n]); } } }

洛谷 - P1162 - 填塗顏色 - dfs - 圖案搜索