描述有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設:
a. 每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上;
b. 走過的格仔立即塌陷無法再走第二次;
c. 只能向北、東、西三個方向走;
請問:如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。
輸入允許在方格上行走的步數n(n <= 20)輸出計算出的方案數量樣例輸入
2
樣例輸出
7
//本題給了兩種遞推的寫法
/*兩種方法的思路總結:
都是用步數i作為迭代量
然後考慮每一步和前一步的關係
第一種方法是找出三向點和二向點的關係
第二種方法是找出當前點是由三個方向過來的,這三個方向分別又是由...過來的
再找出遞推關係,再推導化簡,成功優化為一元狀態轉移方程
*////
ps.希望一年後我也能有這麼強大的acm能力
//特別感謝蔡軍帥的這篇博文讓我學會這題
//他的部落格:
#include#define ll long long
using
namespace
std;
/*每乙個三向的點下一步會生成乙個三向的點和兩個雙向的點
//@3 => @3 +@2 +@2
每乙個雙向的點下一步會生成乙個三向的點和乙個雙向的點
//@2 => @3 +@2
這個可以畫個圖理解模擬一下
*/int a3[25];//
關於三向點的陣列
int a2[25];//
關於二向點的陣列
intmain()
cout
<3+a2[n]*2
/第n步時,有a3[n]個@3和a2[n]個@2
//@3代表有三種走法,@2代表有兩種走法
//直接輸出3*a3[n]+2*a2[n]就好了
return0;
}//本題另一種寫法
//感謝konjac的博文讓我學會這題
//他的部落格:
#includeusing
namespace
std;
int f[25
];int
main()
動態規劃 踩方格
描述 有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。輸入允...
4982 踩方格 動態規劃
描述 有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。輸入允...
動態規劃練習16 踩方格
題目簡要 描述有乙個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設 a.每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上 b.走過的格仔立即塌陷無法再走第二次 c.只能向北 東 西三個方向走 請問 如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案...