依旧模拟
接着打表:
程序如下:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int b,c,d,num,i,j,a[30];
int dfs(int x,int y,int k,int s)
{
if(s==i)
d++;
if(s>i)
return;
dfs(x,y+1,1,s+1);
if(k!=3)
dfs(x-1,y,2,s+1);
if(k!=2)
dfs(x+1,y,3,s+1);
}
int main()
{
for(i=1;i<=20;i++)
{
d=0;
dfs(50,50,1,0);
a[i]=d;
}
for(i=1;i<=20;i++)
printf("%d,",a[i]);
}
接着打表:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
long long a[200]={3,7,17,41,99,239,577,1393,3363,8119,19601,47321,114243,275807,665857,1607521,
3880899,9369319,22619537,54608393};
int main()
{
int b,n;
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
scanf("%d",&b);
printf("%I64d\n",a[b-1]);
}
}
}