网站开发者工具下载,wordpress安装图片不显示不出来,学做窗帘的网站,手机网站智能建站题目描述#xff1a; 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形#xff0c;总共有多少种方法#xff1f; 解题思路与代码#xff1a; 1#xff09; 排列组合#xff1a; class Solution {
public:int rectC…题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形总共有多少种方法 解题思路与代码 1 排列组合 class Solution {
public:int rectCover(int number) {if(number0) return 0; //没有会报错。因为f(0)1.(也进入了循环)int count 0;for(int two 0;two (number/2);two ){ //two(y)每行横着放置的小块数目count com(number-two,two);}return count;}int com(int m,int n){ //计算C(n-y,y)int i m; int sum1;for(int j 0;j n;j,i--){sum sum *i / (j1); // m/1 (m-1)/2 (m-2)/3 ... (m-n1)/n}return sum;}
};2当n2时用第一个2*1的小矩形去覆盖大矩形的最左侧有两种选择竖着放或者横着放。 竖着放时右边还剩下2*(n-1)的区域覆盖的方法同f(n-1)相同。 横着放时其下面也必须横着放此时右边还剩下2*(n-2)的区域覆盖方法同(n-2)相同。 n0f(n)0 n1f(1)1 n2f(2)2; class Solution {
public:int rectCover(int number) {if(number0)return 0;if(number1)return 1;if(number2)return 2;long long numRes 2;long long temp 1;for(int i 3;inumber;i){numRes numRes temp;temp numRes - temp;}return numRes;}
};转载于:https://www.cnblogs.com/GuoXinxin/p/10407275.html