【题解】骨牌铺方格
【题目描述】
【输入描述】
一个整数n(n<=50)
【输出描述】
骨牌的铺法
【样例输入】
3
【样例输出】
4
【思路1】
n为1的时候,方法数F1=1
n为2的时候,方法数F2=2
n为3的时候,方法数F3=4
n为4的时候,方法数F4的分析如下:
第一块放1*1,有一种方法;剩余3块方法数是F3=4种。根据乘法原理,该种情况的方法数是1*4=4。
第一块放1*2,有一种方法;剩余2块方法数是F2=2种。根据乘法原理,该种情况的方法数是1*2=2.
第一块放1*3,有一种方法;剩余1块方法数是F1=1种。该种情况方法数是1*1=1.
根据分类原理,F4=4+2+1=7种。
……
故n>=4的时候,Fn=Fn-1+Fn-2+Fn-3
#include <iostream> using namespace std; //对于1xn长方形 //先决定第一个放的方式,有三种,1x1/1x2/1x3,放好之后,剩余的恰好是1x(n-1)、1x(n-2)、1x(n-3),所以可以用递归的方式来决定。 int An(int n){ if ( n==1 ) { return 1; }else if ( n==2) { return 2; }else if ( n==3) { return 4; }else { return An(n-1)+An(n-2)+An(n-3); } } int main() { int n,sum=0; cin>>n; cout<<An(n)<<endl; }
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。