对称迷宫
描述
wlxsq有一個N*NN?N的網格迷宮,每一個網格都有一個字母編號。
他要從左上角(1,1)(1,1)出發,走到右下角(n,n)(n,n),由于wlxsq很懶,所以他每次只會往右或者往下走一格。
由于最后到終點的路徑方案太多太多了,所以wlxsq想讓你計算出所有不同的對稱的路徑個數。
例如:N = 3N=3
ABA
BBB
ABA
對稱路徑6條:有ABABA(2條)、ABBBA(4條)
不同的對稱路徑有: 有ABABA、ABBBA
輸入
第一行輸入一個數NN,表示迷宮的大小。
接下來輸入N*NN?N的字母迷宮
輸出
輸出對稱路徑的數量
樣例
3
ABA
BBB
ABA
輸出
2
提示
【評測用例規模與約定】
對于40%40%的數據,2<=N<=112<=N<=11
對于100%100%的數據,2<=N<=182<=N<=18
在這一題種我們一般會想到先整體深搜一便保存所有路徑,然后再判斷是不是對稱路徑,然后再進行判重,但是這是一種完全暴力的方法,雖然一開始我也是這樣做的O(∩_∩)O,這樣不僅會超時,還會爆內存,逼近最大的圖是18路勁大概有2^18次方條。
我們搞算法的就要盡可能的優化它,于是有了第二種思路
搜索兩遍,第一遍從1,1位置搜索,第二遍從n,n位置搜索,分別保存路徑和末尾點,然后再比對末尾點是否相同,路徑是否相同,這里的路勁也是一個非常龐大的數據,而且加上判重,優化不好也會超時。
我們想判重能用什么方法,對于數字的判重我們可以用一個visit數組判斷,對于路勁呢,沒錯我們能用map來判斷,下面就是最后AC題的代碼。
或許有人會問為什么T數組只有一維,為什么只要判斷x不用判斷y,應為這里x+y==n+1,所有的點都落在的對角線上。
總結
- 上一篇: 蒸萸肉的功效与作用、禁忌和食用方法
- 下一篇: 笔记,Vector类模板的基本功能