題意:
度度熊是乙個喜歡計算機的孩子,在計算機的世界中,所有事物實際上都只由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字元只能是由...