过河卒
Description
象棋盘上的过河卒具有如下的特点:可以向前向左和向右,不能向后。假定棋盘很大,过河卒恰好走N步(N不超过30) 且不经过已走的点共有多少种走法?
Input
走的步数n。
Output
过河卒恰好走N步(N不超过30) 且不经过已走的点共有多少种走法。
分析:
列两个数组:up描述当前步向上走的走法,side描述当前向两边走的走法.
分析下可以得出:
up[i]=up[i-1]+side[i-1];
side[i]=2*up[i-1]+side[i-1];
注意:数据过大用long long.
代码:
#include<iostream>
using namespace std;
int main()
{
long long up[35]={0},side[35]={0};
int n;
cin>>n;
up[1]=1;
b[1]=2;
for(int i=2;i<=n;i++)
{
up[i]=up[i-1]+side[i-1];
b[i]=2*up[i-1]+side[i-1];
}
cout<<up[n]+side[n]<<endl;
cin.get();
cin.get();
return 0;
}