xtu oj 1340 Wave

一个n列的网格,从(0,0)网格点出发,波形存在平波(从(x,y)到(x+1,y)),上升波(从(x,y)到(x+1,y+1)),下降波(从(x,y)到(x+1,y−1))三种波形,请问从(0,0)出发,最终到达(n,0)的不同波形有多少种?如图,3列网格有7种不同的波形。

xtu oj 1340 Wave_第1张图片

 

输入

第一行是样例数T(1≤T≤42)。 以后每行一个整数n(1≤n≤42)。

输出

每行输出一个样例的结果。

我的思路:

就是一道简单的dp,可以横着dp,也可以竖着dp,横着可能对新手友好点。

我选的起点是[21][0],如果选[0][0]为起点,那wave往上走就没了

#include
int main()
{
    int i,j;
    __int64 a[50][50]={0}; 
    a[21][1]=1;
    a[20][1]=1;
    a[22][1]=1;
    for(j=2;j<=42;j++)
	{
        for(i=0;i<=42;i++)
		{
            a[i][j]=a[i-1][j-1]+a[i][j-1]+a[i+1][j-1];
        }
    }
    int t;
    scanf("%d",&t);
    while(t--)
	{
        int n;
        scanf("%d",&n);
        printf("%I64d\n",a[21][n]);
    }
    return 0;
}

湘大oj

你可能感兴趣的:(xtu,oj,c语言)