題意:在一無限大的二維平面中,我們做如下假設:
1、每次只能移動一格;
2、不能向後走(假設你的目的地是「向上」,那麼你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、走過的格仔立即塌陷無法再走第二次;
求走n步不同的方案數(2種走法只要有一步不一樣,即被認為是不同的方案)。
思路:
f[n]表示走n步的方案數,x[n]表示向下走的方案數,z[n]表示向左右走的方案數;
所以 f[n]=x[n]+z[n],
x[n]=x[n-1]+z[n-1];
z[n]=x[n-1]*2+z[n-1];
所以f[n]=2*f[n-1]+x[n-1]===>f[n]=2*f[n-1]+f[n-2];
感想:求方案數的題不會。
**:#include
using
namespace
std;
intc,n;
__int64
f[21];
intmain()
scanf("%d"
,&c);
while
(c--)
return
0;
}
ACM第三次練習 1001
題意 給出序列a 1 a 2 a 3 a n 計算子串行的最大總和。思路 最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。方法是 只要前i項和還沒有小於0子串行就一直往後擴充套件,否則丟棄之前的子串行開始新的子串行,同時記錄各個子串行的和,最後取他們中的最大值。感想 第一道動態規劃題,感覺...
ACM第三次練習 1002
題意 求兩個字串的最長公共子串行。思路 動態的方程在第乙個元素的相等的時,dp 0 0 dp 1 1 1,天哪,這肯定就會出錯了。在處理時可以選擇字元的讀取從第乙個位置開始,或者把 i 號字元的狀態儲存到i 1號位置去,這樣就從1號開始處理了,判定是就是 s1 i 1 s1 j 1 感想 弄了很久,...
ACM第三次練習 1010
題意 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?思路 搜尋題的感覺,前面幾個數為1,1,2,3,第五個可以這樣考慮 有些走法是和到第四個一樣的,只是最後加了一步,這樣f 5 f 4 x,x表示其他的走法,到第五級時不是走兩步就是一步,一步剛才已經考慮...