在一無限大的二維平面中,我們做如下假設:
1、 每次只能移動一格;
2、 不能向後走(假設你的目的地是「向上」,那麼你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、 走過的格仔立即塌陷無法再走第二次;
求走n步不同的方案數(2種走法只要有一步不一樣,即被認為是不同的方案)。
input
首先給出乙個正整數c,表示有c組測試資料
接下來的c行,每行包含乙個整數n (n<=20),表示要走n步。
output
請程式設計輸出走n步的不同方案總數;
每組的輸出佔一行。
sample input
sample output
#include
int main()
int c,i,a[25]=;;
for(i=3;i<25;i++)
a[i]=2*a[i-1]+a[i-2];
scanf("%d",&c);
while(c--)
int n;
scanf("%d",&n);
printf("%d\n",a[n]);
return 0;
因為n+1時都可以往兩個方向或者三個方向;三個方向是為n時向上的狀態;為n時有多少個向上的狀態?當n-1有多少狀態,n就有多少個向上的狀態;所以遞推公式為a[n]=2*a[n-1]+a[n-2];
平面二維DP
馬攔過河卒 原題傳送門 這一到題目也是比較基礎的動態規劃,也可以理解為是遞推,主要是運用加法原理,思維難度不大。我們要求從 0,0 到 n,n 的方案總數,如果沒有馬的話,我們可以這麼做 設 f i j 為從 0,0 走到 i,j 的方案總數,我們知道一定是有上面和左邊走來,所以只需要累加上面和左邊...
二維幾何 平面最近點對
存個模板 是用分治寫的時間複雜度 nlogn 但是本題好像還有一種玄學做題法 我們充分發揚人類智慧型 將所有點全部繞原點旋轉同乙個角度,然後按x座標排序 根據數學直覺,在隨機旋轉後,答案中的兩個點在陣列中肯定不會離得太遠 所以我們只取每個點向後的5個點來計算答案 這樣速度快得飛起,在n 100000...
二維平面上的回溯演算法(dfs)
回溯演算法在二維平面上的搜尋也能得到應用,也就是我們常說的dfs 題目 給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 輸入 3 4abce s...