当前位置:首页 > 题解目录 > 正文内容

【题解】骨牌铺方格

亿万年的星光1年前 (2025-01-20)题解目录1389

【题目描述】

有1×n(n<=50)的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格,请问有多少种铺法?

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

【输入描述】

一个整数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;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】Best Cow Fences

    【题目描述】    给定一个长度为n的正整数序列A。求一个平均数最大的,长度不小于L的子序列。【输入描述】第一行,n和L;n个正整数,表示A。【输出描述】&nb...

    回文质数

    【题目描述】如果一个数从左边读和从右边读都是同一个数,就称为回文数。例如6886就是一个回文数,求出所有的既是回文数又是素数的三位数。【输入描述】无【输出描述】所有的既是回文数又是素数的三位数。一个数...

    【题解】最小子序列

    【题目描述】给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。如果存在多个解决方案,只需返回 长...

    【题解】密码截获

    【题目描述】Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码 进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。...

    【题解】切割钢管

    【题解】切割钢管

    【题目描述】小A是某工地的计算工程师。工地现有 n 根钢管,第 i 根钢管的长度为 ai。现在想用这 n 根钢管来做一个支撑用的柱子。我么可以切割这些钢管成为更短的钢管,但是不能缝合两根钢管。为了安全...

    【题解】上学线路(2019青岛市程序设计比赛)

    【题解】上学线路(2019青岛市程序设计比赛)

     【题目描述】小D从家到学校的道路结构是这样的:由n条东西走向和m条南北走向的道路构成了一个n*m的网格,每条道路都是单向通行的(只能从北向南,从西向东走)。已知小D的家在网格的左上角,学校...