Time limit: 1000 ms
Memory limit: 32768 kB
OS: Windows
Source:递推求解专题练习(For Beginner)

Problem De ion:
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:

\"在这里插入图片描述\"

Input
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。

Output
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。

Sample Input
1
3
2

Sample Output
1
3
2

问题链接:https://vjudge.net/contest/275894#problem/C

问题简述:用12的长方形去覆盖2n的长方形,计算需要多少1*2的长方形

问题分析:应当注意的是,问题中的n范围是0<n<=50,即包含50这个数字,应该在定义数组时,使数组的长度大于50,这是递归问题,主要的是寻找规律;

程序说明:该程序使用全局变量,以及高精度整数型,多次输入用循环语句while;使用一个for循环,以及一个if-else结构;

AC通过的程序如下:

#include<iostream>
#include<stdio.h>
using namespace std;
int n, i;
int main()
{
	long long int u[51] = { 0,1,2 };
	for (i = 3; i < 51; i++)
	{
		u[i] = u[i - 1] + u[i - 2];
	}
	while (cin >> n)
	{
		if (n < 1 || n>50)
			return 0;
		else
			cout << u[n] << endl;
	}
}
收藏 打印