動態規劃 踩方格

2021-07-30 21:41:53 字數 907 閱讀 1792

描述

有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設:

a.    每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上;

b.    走過的格仔立即塌陷無法再走第二次;

c.    只能向北、東、西三個方向走;

請問:如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。

輸入允許在方格上行走的步數n(n <= 20)

輸出計算出的方案數量

樣例輸入

2

樣例輸出

7

題目要求只能向三個方向走,走過的不能再走,走n步能有幾種方法;

思路如下:

f[i]代表走i步的方法數;

思路一:(這種思路是網上搜到的,引出了思路二)

1.第i步向北走,有f[i-1]種方法;

2.第i-1步向北走的,第i步可以向東西走,那麼有2*f[i-2]種方法;

3.第i-1步向北走的有f[i-2]種,第i-1步向東或者西走,然後第i步不向北走有f[i-1]-f[i-2]種;

最終有f[i]=f[i-1]+2*f[i-2]+(f[i-1]-f[i-2])

種方法;

思路二:(其實就是思路一化簡)

1.第i步至少可以向兩個方向移動有2*f[i-1]種方法;

2.第i-1步向北的,第i步多一種方法,就是f[i-2]種;

最終有2*

f[i-1

]+f[i

-2]種方法;

**如下:

#includeusing namespace std;

int main()

; cin>>n;

for(i=2;i<=n;i++)

cout<

4982 踩方格 動態規劃

描述 有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。輸入允...

動態規劃練習16 踩方格

題目簡要 描述有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案...

踩方格 動態規劃,兩種遞推

描述有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。輸入允許...