acm sdut 深度優先搜尋練習之神奇的矩環

2021-07-29 18:45:38 字數 1672 閱讀 1475

time limit: 1000ms

memory limit: 65536kb

submit

statistic

problemdescription

小鑫的女朋友被魔王搶走了!

魔王留給小鑫一張

n*m大的表,上面有各種各樣的顏色,用

a-z這

26個字母來表示。魔王留給他乙個任務,如果小鑫可以在這張表中找出任意乙個長度大於

1的環,並且這個環的顏色是相同的,魔王就把小鑫的女朋友還給他。為了從魔王手中奪回他的女朋友,小鑫請你幫忙,你能幫幫他嗎?

input

多組輸入。

每組的第一行有兩個整數

n,m。代表表的大小。

接下來是由

a-z的一些字母所構成的n行

m列的表。

1<=n,m<=200

output

如果可以救回他的女朋友,輸出

yes,否則輸出

noexampleinput

4 7
abcbbaa
bcbcbcb
aabbcca
acccbbb
10 3
aac
abb
bba
aac
cbc
cca
cbb
cca
ccb
baa
exampleoutput

no
yes
hint

author

[cpp]view plain

copy

#include 

#include

using

namespace

std;  

char

tu[202][202];  

intv[202][202],bug;  

void

dfs(

intx,

inty,

intx1,

inty1,

intn,

intm)

//x1,y1記錄上一次走過的位置

if(y-1>=0&&tu[x][y]==tu[x][y-1])  

else

if(v[x][y-1]==0)  

}  if(y+1<=m&&tu[x][y]==tu[x][y+1])  

else

if(v[x][y+1]==0)  

}  if(x-1>=0&&tu[x][y]==tu[x-1][y])  

else

if(v[x-1][y]==0)  

}  if(x+1<=n&&tu[x][y]==tu[x+1][y])  

else

if(v[x+1][y]==0)  

dfs(x+1,y,x,y,n,m);  

}  }  

intmain()  

for(i=0;i

if(bug==1)  

}  if(bug==1)  

}  if(bug==1)  

else

}  return

0;  

}  

DFS深度優先搜尋練習

題意 用 代表油田,八個方向互相連線,把相連的油田看作一塊油田,問你最多有多少塊油田。思路 本題其實本質就是乙個迷宮問題,所以我們就可以用dfs或者bfs,本題我們當然採用dfs,用乙個vis標記一下,然後從頭開始遍歷,如果這個點等於 並且vis為0時,開始bfs一次,記錄bfs的次數,bfs的次數...

2016 6 10 深度優先搜尋練習

時間限制 1 s 空間限制 128000 kb 題目等級 gold 在乙個4 4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形...

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...