hdu6113度度熊的01世界 dfs求連通塊

2021-08-06 04:05:01 字數 707 閱讀 3442

題意:

度度熊是乙個喜歡計算機的孩子,在計算機的世界中,所有事物實際上都只由0和1組成。

現在給你乙個n*m的影象,你需要分辨他究竟是0,還是1,或者兩者均不是。

影象0的定義:存在1字元且1字元只能是由乙個連通塊組成,存在且僅存在乙個由0字元組成的連通塊完全被1所包圍。

影象1的定義:存在1字元且1字元只能是由乙個連通塊組成,不存在任何0字元組成的連通塊被1所完全包圍。

連通的含義是,只要連續兩個方塊有公共邊,就看做是連通。

完全包圍的意思是,該連通塊不與邊界相接觸。

思路:求字元『1』的聯通塊個數num1,字元『0』 不與邊界接觸的 連通塊個數num0,num1==1&&num0==0 輸出1;num1==1&&num0==1輸出0;否則輸出-1;

**:#include #include using namespace std;

int n,m;

char str[110][110];

int flag = 0;

int dir[4][2]=,,,};

void dfs(int r,int c,char s)

else if(str[rr][cc]==s)

}}int main()

{ while(~scanf("%d%d",&n,&m))

{int num1 = 0,num0 = 0;

for(int i = 0;i

HDU 6113 度度熊的01世界(dfs)

題目 這裡寫鏈結內容 思路 在n m影象周圍圍一圈 0 然後找0和1的聯通塊數,1聯通塊數肯定為1才行 0聯通塊數如果滿足 影象0的定義 那麼必須只有兩個聯通塊,滿足 影象1的定義 必須只有乙個聯通塊。include using namespace std const int n 105 char ...

HDU 6113 度度熊的01世界 暴力dfs)

因為條件是存在乙個1的聯通塊包含著乙個0的聯通快的才是0所以,我們先預處理邊界,對於0的邊界處理成以訪問過,對於邊界是1的不做操作。然後暴力判斷每個點是否訪問過來進行dfs求聯通塊的個數,如果0的個數和1的個數都是1,那麼可以肯定影象為0,如果0的個數是0,1的個數是1,那麼影象為1。include...

度度熊的01世界 DFS

度度熊是乙個喜歡計算機的孩子,在計算機的世界中,所有事物實際上都只由0和1組成。現在給你乙個n m的影象,你需要分辨他究竟是0,還是1,或者兩者均不是。影象0的定義 存在1字元且1字元只能是由乙個連通塊組成,存在且僅存在乙個由0字元組成的連通塊完全被1所包圍。影象1的定義 存在1字元且1字元只能是由...