小矩形覆盖大矩形问题
小矩形覆盖大矩形问题
- 问题
- 一、解析问题
- 二、代码解析
- 1.新建.cpp文件
- 示例:
问题
- 我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用8个2×1的小矩形无重叠地覆盖一个2×8的大矩形,总共有多少种方法?
一、解析问题
- 我们先把2×8的覆盖方法记为f(8)。用第一个2×1的小矩形去覆盖大矩形的最左边时有两种选择:竖着放或者横着放。
- 当竖着放的时候,右边还剩下2×7的区域,这种情形下的覆盖方法记为f(7)。
- 接下来考虑横着放的情况。当2×1的小矩形横着放在左上角的时候,左下角必须和横着放一个2x1的小矩形,而在右边还剩下2×6的区域,这种情形下的覆盖方法记为f(6),因此 f (8)=f(7)+f(6)。
- 此时我们可以看出,这是斐波那契数列。
二、代码解析
1.新建.cpp文件
示例:
// 小矩形覆盖大矩形问题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
using namespace std;/*递归*/
long long Fibonacci1(unsigned n)
{if (n <= 2)return n;return Fibonacci1(n - 1) + Fibonacci1(n - 2);
}/*循环*/
long long Fibonacci2(unsigned n)
{if (n < 2){return n;}int first = 1;int second = 1;int result = 0;for (int i = 1; i < n; ++i){result = first + second;first = second;second = result;}return result;
}int main()
{cout << "递归" << endl;cout << "Fibonacci1(0) = " << Fibonacci1(0) << endl;cout << "Fibonacci1(2) = " << Fibonacci1(2) << endl;cout << "Fibonacci1(3) = " << Fibonacci1(3) << endl;cout << "Fibonacci1(7) = " << Fibonacci1(7) << endl;cout << endl << "循环" << endl;cout << "Fibonacci2(0) = " << Fibonacci2(0) << endl;cout << "Fibonacci2(2) = " << Fibonacci2(2) << endl;cout << "Fibonacci2(3) = " << Fibonacci2(3) << endl;cout << "Fibonacci2(7) = " << Fibonacci2(7) << endl;return 0;
}
小矩形覆盖大矩形问题相关推荐
- 76 - 小矩形覆盖大矩形
1. 可以用2×1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种覆盖方法?请用递归的方式实现 斐波那契数列的应用 def rectCover ...
- 10-04 矩形覆盖(斐波那契数列的应用)
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路与代码: 1) 排列组合: class Solu ...
- 递归和循环:跳台阶和变态跳台阶和矩形覆盖
题目描述 跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 变态跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它 ...
- 剑指offer_第10题_矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形. 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 理解 n个2*1的小矩形 覆盖 2*n的大矩形 覆盖方式: ...
- 剑指offer:矩形覆盖 python 实现
题目 题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路 简单的推一下,又是斐波那契数列 # -*- co ...
- 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列
题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...
- 剑指offer:矩形覆盖
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: 和跳台阶那道题差不多.分别以矩形的两条边长做拓 ...
- JAVA实现矩形覆盖问题(《剑指offer》)
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形. 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 最近在刷<剑指offer>里的编程题,但是网 ...
- 剑指offer十:矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路如下: 当第一次横着覆盖时,覆盖方法为f(n-2); 当 ...
最新文章
- BZOJ-1257-[CQOI2007]余数之和sum
- 分水岭算法分割图像的原理概述及OpenCV代码实现
- 格子箱被评选为12家最值得注意的亚洲初创科技公司之一
- Vue — 第七天(vue-cli-案例)
- js中小数取整数(向上、向下取整数,四舍五入取整数的实现)
- python图像处理应用的前景_传统图像处理还有前景吗?
- 苹果mac3D模型渲染软件:KeyShot
- 芯片(一)--74HC595中文资料
- 图像去雾算法学习笔记1——何凯明博士基于暗通道先验的单幅图像去雾算法公式推导
- 自由网络-去中心化分布式网络
- #常见电池型号介绍 常见电池尺寸是多少【详解】
- java播放mp3/ogg/ape/flac音乐
- 弦截法(Secant Method)迭代求根的python程序
- ODM、JDM、OEM概念
- SAP修改消息内容和报错类型(OBA5,SE91)
- android view.isshown,源码解析view的显示判断用isShown()还是View.VISIBLE
- MPN (Learning Normal Dynamics in Videos with Meta Prototype Network)代码阅读
- 《32天SQL筑基》导读
- ubuntu上安装spark详细步骤
- 实况足球2017 for mac打不开怎么办?10.13系统无法运行实况足球2017 for mac是什么原因?