棋盤裡的數字(dfs)

2021-07-30 00:14:13 字數 1099 閱讀 3270

描述

lhcoder有乙個n行m列的棋盤,有一顆棋子從左上角(1,1)開始移動,每次只能往右或者往下移動一格,到右下角(n,m)一共有多少移動方案?

輸入有多組測試資料,每組測試資料中有兩個整數n和m(2 <= n, m <= 1000),代表為n行m列的棋盤。

輸出乙個整數p,代表從左上角(1,1)移動到右下角(n,m)的方案數,由於方案數可能比較大,結果請對99991取模。

樣例輸入1

複製

2 2

樣例輸出1

2

樣例輸入2

複製

2 3

樣例輸出2

3

檢視隱藏資訊

很簡單的一道題卻做錯了,大概是因為超時吧,兩種很有趣的解法:

#include #include #include #include using namespace std;

const int mod=99991;

int ans[1005][1005];

int n,m;

int dfs(int x,int y)

if(x==n&&y==m)

long long ret=0;

if(y+1<=m)

if(x+1<=n)

return ans[x][y]=ret;

}int main()

return 0;

}

#include #include #include using namespace std;

const int mod=99991;

int num[1005][1005];

void init()

for(int i=2;i<=1000;i++) }

return ;

}int main()

{ init();

int n,m;

while(~scanf("%d %d",&n,&m))

{cout << num[n][m] <

簡單的說就是很神奇的一些演算法,他的靈活度還需自己慢慢體會(再一次感悟到了簡單演算法的博大精深,主要自己太菜 )

棋盤裡的數學(qduoj 記憶化搜尋)

description lhcoder有乙個n行m列的棋盤,有一顆棋子從左上角 1,1 開始移動,每次只能往右或者往下移動一格,到右下角 n,m 一共有多少移動方案?input 有多組測試資料,每組測試資料中有兩個整數n和m 2 n,m 1000 代表為n行m列的棋盤。output 乙個整數p,代表...

棋盤(dfs 剪枝)

題目描述 有乙個m mm m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。當你從乙個格仔走向另乙個格仔時,如果兩個格仔的顏色相同,那你不需要花費金幣 ...

DFS 棋盤行走

題目描述 解題思路 可以看出n m n mn m是真的小哇!所以直接爆搜就可以了 如果想保險一點,可以嘗試前3步爆搜,後面寬搜 code include include include include using namespace std const int way 4 2 int n,m,a 2...