题目:铺放骨牌
题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,
思路:当n=1时,m=1;
当n=2时,m=2;
当n=3时,m=3;
当n=4时,m=5;
综上,a [ n ] = a [ n - 1 ] + a [ n - 2 ] ;
感想:找到规律问题就很简单了
代码:
#include<iostream>
using namespace std;
int main()
{
long long int a[55];
int n;
a[1]=1;
a[2]=2;
for(int i=3;i<51;i++)
{
a[i]=a[i-1]+a[i-2];
}
while(cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}
该博客探讨了一道关于2×n长方形方格铺放1×2骨牌的问题,给出了当n分别为1、2、3、4时的铺放方案数,并发现递推关系a[n] = a[n-1] + a[n-2]。通过这个规律,使用动态规划求解了任意n的铺放方案总数。示例代码展示了如何实现这一算法。
568

被折叠的 条评论
为什么被折叠?



