1. 程式人生 > >踩方格

踩方格

代碼 數量 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步有三種走法,向上,向左,向右

踩方格