本文主要是介绍骨牌铺法(c++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
骨牌铺法(domino)
【问题】有1*n的一个长方形,用一个1*1、1*2、1*3的骨牌铺满方格。
例如n=3时为1*3的方格。
此时用1*1、1*2、1*3的骨牌铺满方格,共有四种铺法。
即3个1*1、1个1*1+1个1*2、1个1*2+1个1*1、1个1*3。
输入
【输入】n
输出
【输出】铺法总数
样例输入
6
样例输出
24
好我们来看
它这个题跟其他类型的骨牌铺法不同,它的骨牌分3种,并不是1种骨牌
所以直接推
1×1的方格有一种铺法
1×2的方格有两种铺法
1×3的方格有四种铺法
1×4的方格有七种铺法
但它这里不是从3开始
而是从4开始
所以for循环要设i为4
for(int i=4;i<=n;i++){
a[i]=a[i-2]+a[i-1]+a[i-3];
ok,知道重要的了,就可以开始写了
#include<bits/stdc++.h>
using namespace std;
long long a[1100];
int main(){
int n;
cin>>n;
while(1){
a[1]=1;
a[2]=2;
a[3]=4;
a[4]=7;
for(int i=4;i<=n;i++){
a[i]=a[i-2]+a[i-1]+a[i-3];
}
break;
}
cout<<a[n]<<endl;
return 0;
}
ok,还是那句话,别抄
白白
这篇关于骨牌铺法(c++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!