題目:
題解
解法一:bfs
#includeusing namespace std;
const int m=31;
bool vis[m][m];
int n,m,a,b,c,map[m][m];
queue q;
void bfs(int x,int y)
}int main()
} for(int i=1;i<=n;i=i+n-1)}
for(int i=1;i<=n;i=i+n-1)}
for(int i=1;i<=n;i++);
int dy[4]=;
int n,i,j;
void dfs(int p,int q)
int main()
dfs(0,0);//用dfs遍歷所有圈外的0
//圖形外面的一圈是0,這是乙個人為設定的外連通圈,可以借助此遍歷所有圈外的0,達到染色的目的
解法三:先找到乙個在圈內的點,然後把這個連通塊染色為2
#includeusing namespace std;
int a[35][35];
int n,i,j,k;
bool b[5];
int main()
for(k=i;k<=n;k++)if(a[k][j]==1)
for(k=1;k<=j;k++)if(a[i][k]==1)
for(k=j;k<=n;k++)if(a[i][k]==1)
if(b[1]&&b[2]&&b[3]&&b[4]) a[i][j]=2;
}for(i=1;i<=n;i++)
int main(){
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==0)
{//找到乙個0 用dfs對圈裡的連通塊進行染色
洛谷 P1162 填塗顏色(bfs)
由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6 6的方陣 n 6 每組測試資料第一行乙個整數n 1 n 30 接下來n行,由0和1組成的n n的方陣。方陣內只有乙個閉合圈,圈內至少有乙個0。感謝黃小u飲品指出本...
洛谷P1162 填塗顏色 bfs
題目鏈結 題意 有乙個0和1組成的矩陣,一些1組成乙個閉合圈,圈住一些0,現在要把被圈住的這些0變成2輸出。思路 bfs,判斷每個0可以到達的邊界。如果這個0是可以到達矩陣的邊界的說明沒有被圈住。bfs時不把1加入佇列,如果最後也不能到達邊界說明是被圈住的,變成2就行了。1 include2 inc...
洛谷p1162填塗顏色(bfs題目)
原題 本題是我第乙個用bfs的題目,bfs是隊裡的shawnzhou大佬教我的,在這裡先感謝他一下啦 這個題的思路也是他提供的,還是需要一定的練習才行鴨!對於本題來說的話,先將外面的0塗成2 然後遍歷圖,將0和2塗反色就可以了 注意bfs的使用哦 實現 include using namespace...