馬蹄印 深搜

2021-09-19 23:01:45 字數 1310 閱讀 4853

>description

奶牛貝里斯對序列提出了乙個更高的要求,就是要求每個序列中必須是先一定數量的左括號然後是與左括號相同數量的右括號。例如:(((()))),就是乙個完美的平衡序列。

這個農場是乙個nn的方格,每個小方格中都有乙個馬蹄印。貝里斯希望從方格的最左上角的地方開始出發,然後每次可以向上或者向下或者向左或者向右移動一步,使得他走過的每個小方格中的馬蹄印能夠組成乙個完美的平衡序列。不能重複經過任何小方格。請幫助貝里斯在這個nn的方格中找出長度最長的完美序列的長度。

>input

第一行乙個正整數n,表示農場的大小。

接下來n行,每行n個字元,表示n*n的方格上馬蹄印的分布情況。

>output

只有一行乙個整數,表示最長的完美序列的長度,如果不存在這樣的完美序列(例如起始位置就是右括號),則輸出0。

>sample input

4(())

()((

(()(

))))

>sample output

8資料範圍:2<=n<=5。

>解題思路

深搜。>**

#include 

#include

using namespace std;

const int xx[4]

=;const int yy[4]

=;int n,ans;

char a[6]

[6];

string s;

bool yd[6]

[6];

void

ooo(int x,int y,int l,int r)

//分別記錄座標,左括號和右括號的數量

if(lreturn

;//如果已經不平衡了

for(int i=

0;i<

4;i++

) yd[x]

[y]=0;

//回溯

}int main()

yd[1]

[1]=

1;//yd[i][j]標記(i,j)是否走過

if(a[1]

[1]==

'(')

else

printf

("0");

//如果開始就是右括號的話就組成不了平衡序列

return0;

}

(紀中)1747 馬蹄印 DFS

file io input hshoe.in output hshoe.out 時間限制 1000 ms 空間限制 262144 kb 具體限制 goto problemset 題目描述 雖然當奶牛貝里斯找到平衡序列後很高興了,但是他現在對序列提出了乙個更高的要求,就是要求每個序列中必須是先一定數量...

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...

搜尋(深搜 廣搜)

我記得在遙遠的2017年,我會敲的搜尋也只有暴力列舉了。那個時候的我深搜剛會一丟丟,所以也只配切切水題,然而經常死迴圈re那是肯定的。如今的我因為在多次比賽中都死於搜尋,那就必須得認真磕一下了。其實是這樣的 我眼裡認為的暴力就真的只是暴力,暴力無非就兩種 列舉打表和模擬。然而在這麼多次比賽後,我總能...