码迷,mamicode.com
首页 > 其他好文 > 详细

I - 小兔的棋盘 (HDU - 2067)

时间:2018-02-14 15:36:47      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:blog   +=   题目   str   利用   end   路径   cpp   cin   

- 题目大意

     中文题,寻找从起点(0,0)走到终点(n,n)且不穿过对角线的最短路径数。

- 解题思路

     利用卡特兰数,地图上的点满足num[i] += num[j] * num[i - j - 1],最后卡特兰数乘2就是答案了。

- 代码

#include<iostream>
#include<cstring>
using namespace std;
const int MAX = 36;
long long num[MAX];
void find()
{
	memset(num, 0, sizeof(num));
	num[0] = num[1] = 1;
	for (int i = 2; i <= 35; i++)
		for (int j = 0; j<i; j++)
		{
			num[i] += num[j] * num[i - j - 1];
		}
}
int main()
{
	int n;
	int a = 1;
	find();
	while (cin >> n)
	{
		if (n == -1)
		{
			break;
		}
		cout << a++ << " " << n << " " << 2 * num[n] << endl;
		
	}
	return 0;
 }

  

I - 小兔的棋盘 (HDU - 2067)

标签:blog   +=   题目   str   利用   end   路径   cpp   cin   

原文地址:https://www.cnblogs.com/alpacadh/p/8448374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!