// test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<string> #include<cctype> #include <vector> #include<exception> #include <initializer_list> using namespace std; class Solution…
时间限制:1秒     空间限制:32768k 斐波那契数列指的是这样一个数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368. 可以观察到,从第3个数开始,每个数的值都等于前连个数之和. 同时,定义f(0)=0, f(1)=1. 则 f(2)=f(1)+f(0)=1; f(3)=f(2)+f(1)=2; ... 依次类推,  f(…
class Solution { public: int jumpFloor(int number) { ) ; ) ; )+jumpFloor(number-); } }; 如果先建立数组,然后利用数组累加,会超出存储限制.…
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形. 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 是不是发现看不懂,哈哈:编程题就是这样,一定要归纳,手写过程: n = 1,则 1; n = 2.则1,1横1,1竖:是不是有点眼熟: n= 3,则1,1,1横,1,1横1竖,1竖1,1,横:...还要再说么? 注意不能省2,因为0为0: public class Solution { public int RectCover(int target) { if(ta…
1. 题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 2.思路和方法 思路:(下面说到的x*y的矩形,x是宽,y是长,固定一下方便理解)假设一个2×n的矩形,那么放第一个小矩形有两种放法:放2×1的或者放1×2的,如果是放1×2的意味着在它的下面也只能放一个1×2的,组成一个2×2正方形.那么我们就可以分为两种结构,第一种是2×1的矩形,第二种是2×2的正方形.宽都是2不用考虑,长有1和2两种选择,那么可…
首先说明这是一个数学的排列组合问题C(m,n) = m!/(n!*(m-n)!) 比如:有集合('粉色','红色','蓝色','黑色'),('38码','39码','40码'),('大号','中号') 分别从每一个集合中取出一个元素进行组合,问有多少种组合?解:C(4,1) * C(3,1) * C(2,1) = (4!/(1!*(4-1)!)) * (3!/(1!*(3-1)!)) * (2!/(1!*(2-1)!)) = 24/6 * 6/2 * 2 = 4 * 3 * 2 = 24(种)…
(n!/(n1! *n2! *n3!..nr!) )   * r!/( 同数量组A的数量! 同数量组B的数量!....) 比方20个东西分成2,2,,2,2   3,3,3,3 8组分给8个人有多少种分法 [20!/(2!^4  3!^4)] *  8! /(4!*4!) 说明8!表示有8组,那么意味着有8!种排列,由于2,2,2,2有4组,其中4!种排列是重复的同理3,3,3,3也一样 考虑特色情况8个人分8个不同的东西,每人一个 那么分组是1,1,1,1,1,1,1,1          …
利用动态规划,一共有n列,若从左向右放小矩形,有两种放置方式: 第一种:横着放,即占用两列.此时第二行的前两个空格只能横着放,所有,总的放置次数变为1+num(2*(n-2)),其中2*(n-2)代表两行n-2列的矩阵 第二种:竖着放,此时有1+num(2*(n-1)),因此 利用动态规划求解 public class Solution { public int RectCover(int target) { int [] res = new int[target+1]; if(target<=…
class Solution { public: int rectCover(int number) { ; ; ; ||number==) ; ) ; ;i<number+;i++){ res=pre1+pre2; pre1=pre2; pre2=res; } return res; } }; 也可以采用矩阵的方式.这里可以用循环代替递归.…