描述
有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設:
a. 每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上;
b. 走過的格仔立即塌陷無法再走第二次;
c. 只能向北、東、西三個方向走;
請問:如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。
輸入允許在方格上行走的步數n(n <= 20)
輸出計算出的方案數量
樣例輸入
2
樣例輸出
7
1)深搜
#include#include#include#define p 50
using namespace std;
int a[p][p];
int n;
int dfs(int i,int j,int n)
if(!a[i+1][j])
if(!a[i][j+1])
a[i][j]=0;//乙個方向遍歷完後重新恢復為0以備下次訪問
return num;
}int main()
2)遞迴
設l[i],r[i],u[i]分別為第 i 步向西、東、北的方案數,f[i]為總方案數。
l[i]=l[i-1]+u[i-1], r[i]=r[i-1]+u[i-1], u[i]=l[i-1]+r[i-1]+u[i-1]
f[i]=l[i]+r[i]+u[i]
=2*l[i-1]+2*r[i-1]+3*u[i-1]
=2*f[i-1]+u[i-1]
=2*f[i-1]+f[i-2]
#include#include#includeusing namespace std;
int f[25];
int n;
int main()
百練4103 踩方格
題意 有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。思路 ...
百練4103(踩方格)
bailian.openjudge.cn practice 4103 4103 踩方格 總時間限制 1000ms 記憶體限制 65536kb 描述 有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 ...
百練4982 踩方格
總時間限制 1000ms 記憶體限制 65536kb 描述有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2...