列表

详情


NC14541. 布置会场(I)

描述

今天是Tabrismengxiang000来到幼儿园的第3天,mengxiang000接到了一个布置会场的任务。

他需要将贵宾观众席的椅子排成一排,一共需要N个。

幼儿园只有两种椅子,所以他也只能使用两种椅子。(A类型和B类型)并且假设每种椅子的数量都是无限的。

而其如果想要摆置一个B类型的椅子,对应就需要必须有连续两个一起布置。换句话说,就是如果出现了B类型的椅子,其必须且只有两个连着B类型的椅子。

mengxiang000突然想知道对应N个椅子排成一列,他能够有多少种布置的方式.

输入描述

本题包含多组输入第一行输入一个整数t,表示测试数据的组数
每组测试数据包含一行,输入一个整数N,表示一共需要摆放的椅子数量
t<=30
1<=N<=30

输出描述

每组测试数据输出包含一行,表示一共有多少种布置的方式。

示例1

输入:

2
2
4

输出:

2
5

说明:

第一个样例,AA,BB两种方案。
第二个样例,AAAA,BBBB,AABB,ABBA,BBAA五种方案 对于ABBB 因为有连续3个B类型椅子所以不可行

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 392K, 提交时间: 2020-10-09 21:10:37

#include<bits/stdc++.h>
using namespace std;
int main() {
	int T;
	cin>>T;
	vector<int> a(31,1);
	for(int i=2; i<=30; i++)
		a[i]=a[i-1]+a[i-2];
	while(T) {
		int n;
		cin>>n;
		cout<<a[n]<<endl;
		T--;
	}
	return 0;
}

C(clang 3.9) 解法, 执行用时: 51ms, 内存消耗: 344K, 提交时间: 2020-07-27 12:42:18

# include <stdio.h>

int main(){
	int n,m,j[30]={1,2},i=2;
	for(;i<30;i++){
 	    j[i]=j[i-2]+j[i-1];
	}
	scanf("%d",&n);
	while(n--){
		scanf("%d",&m);
		printf("%d\n",j[m-1]);
	}
	return 0;
}

C++ 解法, 执行用时: 3ms, 内存消耗: 376K, 提交时间: 2021-07-15 11:01:42

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[30],n,b,i=2;
cin>>n;a[0]=1;a[1]=2;
for(;i<30;i++)a[i]=a[i-1]+a[i-2];
for(i=0;i<n;i++){cin>>b;cout<<a[b-1]<<endl;}
}

Python(2.7.3) 解法, 执行用时: 12ms, 内存消耗: 2820K, 提交时间: 2020-09-06 15:39:03

T=int(input())
while T :
    T-=1
    n=int(input())
    res=1
    f=1
    g=1
    i=2
    while i<=n :
        i+=1
        res=f+g
        f=g 
        g=res
    print (res)

Python3 解法, 执行用时: 29ms, 内存消耗: 4480K, 提交时间: 2021-12-16 16:32:04

t=int(input())
a=[0 for i in range(36)]
a[1]=1
a[2]=2
for i in range(3,35):
    a[i]=a[i-1]+a[i-2]
while t:
    t-=1
    n=int(input())
    print(a[n])
    

上一题