最近遇到了一个很有意思的铺砖问题,不同于以往的常规问题,这个新问题中对铺砖的方式进行了规划。本人并非编程专业出身,这个问题想了很久也是想不明白,希望平台大神们能够指点一二
具体来说是这样的,给定一个 H x W 的范围,以及两种砖块(1x2 和 1x3)。除了常规要求,既砖块不能重和以外,还要求每两行之间砖缝不能对齐。问总共有多少种铺砖方法。
目前已经可以使用递归的方法来寻找所有铺砖的方法。困扰的问题在于,如何在递归中实现“砖缝不能对齐”的要求。求各位大神帮忙,在此先谢过了!
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<iostream>
#include<cstdio>
using namespace std;
const int N=255,mod=100007;
int dp[N];
int main(){
freopen("wall.in","r",stdin);
freopen("wall.out","w",stdout);
dp[1]=1;
dp[2]=3;
for (int i=3;i<=N;i++){
dp[i]=(dp[i-1]%mod+2*dp[i-2]%mod)%mod;
}
int n;
cin>>n;
cout<<dp[n]<<endl;
return 0;
}