在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
问题简述:
根据方格的大小2*n,利用数学知识进行计算,得到当方块长度为n时,能放下多少的骨牌。
问题分析:
实质上是找规律问题。当计算前n组时,不难发现“1 2 3 5 8…"的答案满足费波纳茨数列的规律。这题就变成了利用数组进行累加的问题了。注意数组的整数类型大小,可以用 long long 的类型。
AC的C++程序为
#include
using namespace std;
int main()
{
int n,i;
long long a[51];
a[0] = 1; a[1] = 1;
while (cin >> n)
{
for (i = 2; i <= n; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
cout << a[n] << endl;
}
}
骨牌铺方格
最新推荐文章于 2022-08-11 15:52:04 发布