原创博文,转载请注明出处! 0.简介 # 本文是牛客网<剑指offer>刷题笔记,笔记索引链接 1.题目 # 用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 2.思路 # 2*1的矩阵覆盖2*8的矩阵的方法f(8):用第一个1*2矩阵覆盖2*8矩阵的最左边时有竖着或横着两种方法. 当1*2矩阵竖着放时,2*8矩阵右边剩余2*7的区域,覆盖2*7区域的方法记为f(7); 当1*2矩阵横着放时,2*8左上角放一个1*2的矩阵…
一.题目 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 二.解答思路 如果第一步选择竖方向填充,则剩下的填充规模缩小为n-1: 如果第一步选择横方向填充,则剩下的填充规模缩小为n-2,因为第一排确定后,第二排也就确定了. 因此,递归式为: tectCover(n)= tectCover(n-1)+ tectCover(n-2): 边界条件为: 当n=0时, 总共有0种方法: 当n=1时, 总共有1种方法: 当n=…
总结 1. 斐波那契数列的变形题, 但是稍有隐晦, 有点意思 2. 求解 f(3) 时, 最后一块矩形可以竖着放, 也可以两块矩形横着放, 分别对应于 f(2) 和 f(1) ---------------- 0 | 1 |  2  |  3 ----------------…
面试10题: 题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1)+f(n-2) 解题代码一:基于循环(推荐) 代码如下: # -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here small=0 big=1 if n<=0: return 0 if n==1:…
题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: ①方法一 对于这种题没有思路怎么办?可以先从最简单的情况开始考虑: 显然,当n = 1时,只有一种方法 当n = 2时,如图有两种方法 当n = 3时,如图有三种方法 当我们做到这里总会出现错觉,是不是n等于几就是有几种方法呢?我们再接着来尝试: 当n = 4时,如图有五种方法. 做到这里基本上会确定就是斐波拉契数列了,可以接着验证,这里不做赘…
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题目分析 当然也可以逆向思维 应为可以横着放或竖着放,多以f(n)可以是2*(n-1)的矩形加一个竖着放的2*1的矩形或2*(n-2)的矩形加2横着放的,即f(n)=f(n-1)+f(n-2) 当到了最后,f(1)=1,f(2)=2 代码 function rectCover(number) { // write code here if (number =…
  题目描述:   我们可以用2 X 1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2 X 1的小矩形无重叠地覆盖一个2 X n的大矩形,总共有多少种方法?   解题思路:   我们可以以2 X 8的矩形为例.   先把2X8的覆盖方法记为f(8),用1X2的小矩形去覆盖时,有两种选择:横着放或者竖着放.当竖着放时,右边还剩下2X7的区域.很明显这种情况下覆盖方法为f(7).当横着放时,1X2的矩形放在左上角,其下方区域只能也横着放一个矩形,此时右边区域值剩下2X6的区域,这种情况下覆盖方法…
题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式. 模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式. 例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但是与”aa.a”和”ab*a”均不匹配. 样例 输入: s="aa" p="a*" 输出:true 算法1很经典的题目 也相当的难.采用动态规划dp[i][j] 表示 s[0~i)的字符串与p[0~j)的字…
总结 1. 通过按位对比来判断, 没有更优的方法了…
import java.util.Scanner; /* 前两种方法是看最低为是不是为1,不为1则向右移动. 第一种只能对正整数有效,对负数不行,因为负数用的是补码,最高外符号位为1,最后右移动,肯定会变成0xFFFFFFFFFF....F*/ public class FindNmuberOf1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNextInt(…