zoukankan      html  css  js  c++  java
  • 小明的烦恼

    小明的烦恼

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


    题目描述

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

    输入

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

    输出

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

    样例输入

    2
    2
    3

    样例输出

    3
    5

    题意概括

    一共有两种地砖,1*1的和2*2的,知道墙宽是三米,问,当长度为n米的时候,铺盘地砖一共有多少种铺的方法。

    解题思路

    这个题我是使用的搜索,把所有符合的情况都搜索一遍,然后求和,但是这个题后来才知道是一个变形的斐波那契~~~

    代码如下

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<ctype.h>
    #include<algorithm>
    using namespace std;
    
    long long sum;
    void dfs(int m,int num)
    {
        if(m==0){
            sum+=(int)pow(2,num);
            return ;
        }
        dfs(m-1,num);
        if(m>1){
            dfs(m-2,num+1);
        }
    }
    int main ()
    {
        int n,m,i,j;
        scanf("%d",&n);
        while(n--){
            scanf("%d",&m);
            sum=0;
            dfs(m,0);
            printf("%lld
    ",sum);
        }
        return 0;
    }
    
  • 相关阅读:
    收集 关于php的博文
    hdwiki中插件开发指南
    MySQL中“”的坑
    SpringBoot生成验证码
    Spring中的循环依赖问题
    深入理解AQS(抽象队列同步器)
    JUC下线程的三种等待唤醒机制
    关于List集合的去重
    MySQL:去除 字符串
    MySQL:Can't connect to MySQL server on 'localhost'(10061)
  • 原文地址:https://www.cnblogs.com/lanaiwanqi/p/10445730.html
Copyright © 2011-2022 走看看