• [Jobdu] 题目1390:矩形覆盖


    题目描述:

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 

    输入:

    输入可能包含多个测试样例,对于每个测试案例,

    输入包括一个整数n(1<=n<=70),其中n为偶数。

    输出:

    对应每个测试案例,

    输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数。

    样例输入:
    4
    样例输出:
    5

    其实就是跳台阶!

    /*把长条n*2的覆盖问题分解,第一步,若竖着覆盖一个2*1的方块,那么剩下的为2*(n-1)块,
    否则,若横着覆盖,应用两块,覆盖一个2*2的块,剩下2*(n-2),这两种覆盖的方式都各有一种
    于是,这个问题等同于递归f(n)=f(n-1)+f(n-2)*/

     1 #include <iostream>
     2 using namespace std;
     3 
     4 long long res[71];
     5 
     6 void init()
     7 {
     8     res[0] = 1;
     9     res[1] = 1;
    10     for (int i = 2; i < 72; i++) {
    11         res[i] = res[i-1] + res[i-2];
    12     }
    13     return;
    14 }
    15 
    16 int main()
    17 {
    18     init();
    19     int n;
    20     while (cin >> n) {
    21         cout << res[n] << endl;
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    JDK JRE Java虚拟机的关系
    apache和tomcat区别
    JBoss Web和 Tomcat的区别
    SOAP 与 restful service区别
    IntelliJ Idea 常用快捷键列表
    Win7用户文件夹转移
    相同IP和Mac地址的问题
    WebDriver 浅析
    Web UI 自动化测试
    python中xlrd模块的使用
  • 原文地址:https://www.cnblogs.com/easonliu/p/3654672.html
Copyright © 2020-2023  润新知