题目大意:
在一无限大的二维平面中,我们做如下假设:<br>1、 每次只能移动一格;<br>2、 不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);<br>3、 走过的格子立即塌陷无法再走第二次;<br><br>求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。
思路:
也是用递推去考虑。上一步向上的,接下来的这一步可以三个方向。
上一步左右的,接下来只能上或者相反。那么递推公式就考虑出来了
感想:
拆分以后还是比较好考虑的。 豆豆一直在给我补课,也有找子文给我补课,学到了很多,谢谢他们,也谢谢老师。
AC代码:
- #include <iostream>
- #include<stdio.h>
- #include<algorithm>
- #include<string.h>
- #include<cmath>
- using namespace std;
- long long int up[25];
- long long int leri[25];
- int main()
- {
- int T;
- int a;
- cin>>T;
- up[1]=1;
- leri[1]=2;
- for(int i=2;i<21;i++)
- {
- up[i]=up[i-1]+leri[i-1];
- leri[i]=up[i-1]*2+leri[i-1];
- }
- while(T--)
- {
- scanf("%d",&a);
- cout<<up[a]+leri[a]<<endl;
- }
- }