踩方格
阿新 • • 發佈:2018-12-12
代碼 數量 namespace out cin turn 輸入 格子 main
【題目描述】 有一個方格矩陣,矩陣邊界在無窮遠處。我們做如下假設: a、每走一步時,只能從當前方格移動一格,走到某個相鄰的方格上; b、走過的格子立即塌陷無法再走第二次; c、只能向北、東、西三個方向走; 請問:如果允許在方格矩陣上走n步,共有多少種不同的方案。2種走法只要有一步不一樣,即被認為是不同的方案。 【輸入】 允許在方格上行走的步數n(n≤20)。 【輸出】 計算出的方案數量。 【輸入樣例】 2 【輸出樣例】 7
#include <bits/stdc++.h> using namespace std; int long long up[25],l[25],r[25]; int main() { int n,i; cin>>n; up[0]=1; for(i=1;i<=n;i++) { up[i]=up[i-1]+r[i-1]+l[i-1]; //向上:第i-1步不可能向下走,所以第i步往上、左、右都行,所以i-1有多少種走法,i就有多少種走法; l[i]=up[i-1]+l[i-1]; //向左:若第i步是向左,則第i-1步不能向右,只能向左或向上
r[i]=up[i-1]+l[i-1]; //同上
//這三行代碼都是這幾種情況相加得到的,所以就是方法的數目} cout<<up[n]+l[n]+r[n]<<endl; //把他們加起來就是答案 return 0; }
第i步有三種走法,向上,向左,向右
踩方格