题目一:
不同的出栈顺序数
Problem Description
X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。
路边有个死胡同,只能容一辆车通过,是临时的检查站,如图所示。
(图见QQ群)
X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。
如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?
为了方便起见,假设检查站可容纳任意数量的汽车。
显然,如果车队只有1辆车,可能次序1种;2辆车可能次序2种;3辆车可能次序5种。
现在足足有16辆车啊,亲!需要你计算出可能次序的数目。
这是一个整数,不要填写任何多余的内容(比如说明性文字)。
Input
无
Output
输出一个整数
详解:https://blog.youkuaiyun.com/naux1/article/details/79559849 和h ttps://blog.youkuaiyun.com/duzejie/article/details/52491072
卡特兰数:https://www.cnblogs.com/COLIN-LIGHTNING/p/8450053.html
题目二:
世界末日还有多远
Problem Description
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲)。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
如图是现代“山寨”版的该玩具。64个圆盘太多了,所以减为7个,金刚石和黄金都以木头代替了......但道理是相同的。
据说完成大梵天的命令需要太多的移动次数,以至被认为完成之时就是世界末日!
你的任务是精确计算出到底需要移动多少次。
很明显,如果只有2个圆盘,需要移动3次。
圆盘数为3,则需要移动7次。
那么64个呢?
Input
无
Output
输出一个整数,为64个罗盘需要移动的次数。注意,答案在long long范围内。
思路:虽然它说答案来long long 范围内,但其实刚好超出。可以把dp[63]的值 分割成两部分,然后用计算器计算,再相加。
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
ll dp[80]={0,0,3,7};
int main()
{
for(int i=4;i<=66;i++)
dp[i]=2*dp[i-1]+1;
cout<<dp[63];
// 922337203.6854775807 拆成两部分,用计算器算出后相加,再加一
// 18446744073709551615
return 0;
}
题目三:
LIS:
https://blog.youkuaiyun.com/qq_40507857/article/details/81198662 和 https://www.cnblogs.com/is-Tina/p/7294067.html