问题描述
有1×n的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格。例如当n=3时为1×3的方格。此时用1×1、1×2和1×3的骨牌铺满方格,共有四种铺法。如下图:
问题分析:
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;
int main(){
long long a,b,c,x,n,i;
cin>>n;
a = 1;
b = 2;
c = 4;
if(n == 1){
cout<<1<<endl;
}else if(n == 2){
cout<<2<<endl;
}else if(n == 3){
cout<<4<<endl;
}else{
for(i = 4;i <= n;i++){
x = a + b + c;
a = b;
b = c;
c = x;
}
cout<<x<<endl;
}
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容