1045 - 小明的烦恼

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明最近新买了一个房间,为了给它做装修,想要给它铺上地砖。然而现有的地砖只有两种规格分别为1米1米、2米2米,由于小明买的房间有点小,宽度只有3米,长度为N米。当然这样一个房间也足够他自己一个人住了。那么如果要给这个房间铺设地砖,且只用以上这两种规格的地砖,请问有几种铺设方案。

题目输入

输入的第一行是一个正整数C,表示有C组测试数据。接下来C行,每行输入一个正整数n(1<=n<=30),表示房间的长度。

题目输出

对于每组输入,请输出铺设地砖的方案数目。

输入/输出样例

输入格式

2
2
3

输出格式

3
5

C语言解答

#include<stdio.h>

int main()
{
	int i,c,n,a[31],b[31],sum;
	a[1]=1;
	sum=a[1];
	for(i=2;i<=30;i++)
	{
		if(i%2==0)
		{
			a[i]=sum+2;
			sum=sum+a[i];
		}
		else
		{
			a[i]=sum+1;
			sum=sum+a[i];
		}
	}
	scanf("%d",&c);
	while(c--)
	{
		scanf("%d",&n);
		printf("%d\n",a[n]);
	}
	return 0;
}

C++解答

#include<stdio.h>

int main()
{
	int i,c,n,a[31],b[31],sum;
	a[1]=1;
	sum=a[1];
	for(i=2;i<=30;i++)
	{
		if(i%2==0)
		{
			a[i]=sum+2;
			sum=sum+a[i];
		}
		else
		{
			a[i]=sum+1;
			sum=sum+a[i];
		}
	}
	scanf("%d",&c);
	while(c--)
	{
		scanf("%d",&n);
		printf("%d\n",a[n]);
	}
	return 0;
}

Java解答

import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		 int a=sc.nextInt();
		 int[] b=new int[31];
		 b[1]=1;
		 b[2]=3;
		 for(int i=3;i<31;i++){
			  b[i]=b[i-1]+2*b[i-2];  
		  }
		while(a--!=0){
		  System.out.println(b[sc.nextInt()]);
		}
	}
}