描述
有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設:
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種走法只要有一步不一樣,即被認為是不同的方案。輸入允許...