HDUOJ:【3】2046骨牌铺方格

原题目:

http://acm.hdu.edu.cn/showproblem.php?pid=2046

 主要思路:

仔细观察排列的方式,当列数为n时,可理解为以下两种情况:

  1. 由n-1列在最右侧加一列
  2. 由n-2列在最右侧加两行

讨论一下为什么没有考虑n-2列加两列的情况,因为n-2列加一列就相当于n-1列了,这些情况数已经包括在了情况1中。

源代码:

#include <iostream>
using namespace std;
int main()
{
	int n;
	unsigned long long int cal[55];
	cal[1] = 1;
	cal[2] = 2;
	cal[3] = 3;
	for(int i = 4; i <= 54; i++)
	{
		cal[i] = cal[i-1] + cal[i-2];
	}
	while(scanf("%d",&n) != EOF)
	{
		printf("%llu\n",cal[n]);
	}
	return 0;
}

 

HDUOJ:【3】2046骨牌铺方格HDUOJ:【3】2046骨牌铺方格 Alex_497259 发布了4 篇原创文章 · 获赞 0 · 访问量 61 私信 关注
上一篇:学Linux的第一天


下一篇:java之获得中文星期几