c语言新手求解

题目描述
小明最近新买了一个房间,为了给它做装修,想要给它铺上地砖。然而现有的地砖只有两种规格分别为1米*1米、2米*2米,由于小明买的房间有点小,宽度只有3米,长度为N米。当然这样一个房间也足够他自己一个人住了。那么如果要给这个房间铺设地砖,且只用以上这两种规格的地砖,请问有几种铺设方案。
输入格式
输入的第一行是一个正整数C,表示有C组测试数据。接下来C行,每行输入一个正整数n(1<=n<=30),表示房间的长度。
输出
对于每组输入,请输出铺设地砖的方案数目。
样例输入
2
2
3
样例输出
3
5
这些是题目.......下面是我的程序.....我的程序交上去是编译错误.....求大神
#include<stdio.h>
int main()
{
int n,c,a[30],b,i,j;
scanf("%d",&c);
for(i=0;i<c;i++)
{
scanf("%d",&n);
if(n==1)
a[0]=0;
b=6;
for(j=3;j<30;j++)
{
a[1]=2;a[2]=4;
a[j]=b+2*a[j-2];
b=b+2;
printf("%d\n",a[j]);
}
printf("%d\n",a[n-1]+1);}
}

考虑加了一米的情况,最后一米只用1X1的,有a[j-1]种情况;用2X2的,有2*a[j-2]种情况;
#include<stdio.h>
int main()
{
int n,c,a[30],b,i,j;
scanf("%d",&c);
for(i=0;i<c;i++)
{
scanf("%d",&n);
if(n==1)
a[0]=0;
// b=6;
for(j=3;j<30;j++) //这里可以优化一下,把30换成n,缩短程序运行时间
{
a[1]=3;a[2]=5;
a[j]=a[j-1]+2*a[j-2];//这是公式,不知道你的b=6是干什么的
// b=b+2;
// printf("%d\n",a[j]);
}
printf("%d\n",a[n-1]);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-23
或者你干脆改成void main()
第2个回答  2013-10-23
return 0;
没写呀。。。