帕斯卡遊記 記憶化dfs

2021-10-04 03:38:57 字數 1422 閱讀 2987

問題描述

nxn遊戲板上裝有整數,每平方乙個非負整數。目標是沿著板子的左上角到右下角的任何合法路徑行進。任何乙個正方形中的整數表示距該位置必須多大的步幅。如果步長將提前離開遊戲板,則禁止沿該特定方向前進。所有步驟都必須在右側或底部。請注意,0是乙個死角,會阻止進一步的進展。

考慮圖1所示的4 x 4板,其中實心圓圈標識起始位置,而虛線圓圈標識目標。圖2顯示了從起點到目標的三個路徑,每個路徑中不相關的數字都已刪除。

圖1

圖2輸入值

輸入包含1到30個板的資料,最後一行僅包含整數-1。電路板的資料從包含單個正整數n(4 <= n <= 34)的行開始,n是該電路板中的行數。隨後是n行資料。每行包含n個數字,0-9,中間沒有空格。

輸出量

每個板的輸出由一行組成,包含乙個整數,該整數是從左上角到右下角的路徑數。任何一塊板的路徑將少於2 ^ 63。

樣本輸入

42331

1213

1231

3110

43332

1213

1232

2120

511101

01111

11111

11101

11101

-1樣本輸出30

7[提示]提示[/提示]

檢查每條路徑的蠻力方法可能會超過分配的時間限制。

使用visual c / c ++可以將64位整數值用作「 __int64」值或「 long long」值

使用free pascal編譯器使用gnu c / c ++或「 int64」值。

資源

美國中部,2023年

#include

using

namespace std;

int n;

int mp[50]

[50];

long

long ans[50]

[50];

int dir[4]

[2]=

,};long

long

dfs(

int x,

int y)

return ans[x]

[y];

}int

main()

} ans[n]

[n]=1;

cout <<

dfs(1,

1)<< endl;

}return0;

}

dfs 記憶化 滑雪

傳送門 題意 給定乙個r行c列的矩陣,表示乙個矩形網格滑雪場。矩陣中第 i 行第 j 列的點表示滑雪場的第 i 行第 j 列區域的高度。乙個人從滑雪場中的某個區域內出發,每次可以向上下左右任意乙個方向滑動乙個單位距離。當然,乙個人能夠滑動到某相鄰區域的前提是該區域的高度低於自己目前所在區域的高度。資...

滑雪 DFS 記憶化搜尋

michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長的滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 3 4 5 16 17 ...

除數博弈 dfs 記憶化

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字 n 在每個玩家的回合,玩家需要執行以下操作 選出任一 x,滿足 0 x n 且 n x 0 用 n x 替換黑板上的數字 n 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回 true,否則返回...