P367骨牌铺方格

问题描述
有1×n的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格。例如当n=3时为1×3的方格。此时用1×1、1×2和1×3的骨牌铺满方格,共有四种铺法。如下图:

图片[1]-P367骨牌铺方格-天明的博客

问题分析:

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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容