黑暗军团在城外的草地上布阵,如果把草地划分成很多大小一样的方格,看成无限大的棋盘,军团从中心点出发,每次只能向上或向左或向右移动一步(移动的过程中,走过的格子不能再次进入)。就能到达相邻的一个格子里,如果一共移动了N步,总共有多少种走法呢?
输入
一个整数即N,N≤30。
输出
输出步数。
样例输入
2
样例输出
7
运用递推
这个是找出规律,答案算出来,规律我竟然找了半天
#include <iostream>
#include <algorithm>
using namespace std;
long long ans=0;
int fun(int n,int x,int len)
{
int a[3]={1,2,3};
if(len==n){
ans++;
return 0;
}
for(int i=0;i<3;i++){
int t;
if(a[i]!=x){
if(a[i]==2) t=3;
else if(a[i]==3) t=2;
else t=0;
fun(n,t,len+1);
}
}
}
int main()
{
int n;
int b[2];
for(n=1;n<=30;n++){
ans=0;
fun(n,0,0);
cout<<ans<<endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
long long a[33]={0,3,7};
cin>>n;
for(int i=3;i<=n;i++)
a[i]=a[i-1]*2+a[i-2];
cout<<a[n]<<endl;
}