挑战是编写最短的实现以找到最长的递增子序列。
示例:令S为序列1 5 7 1 8 4 3 5 [S的长度= 8]
- 我们有1个长度为0的子序列[会认为它正在增加]
- 长度为1 {1,5,7,8,4,3}的6个子序列[它们都被认为正在增加]
- (7 * 8)/ 2个长度为2的子序列[但是我们将删除重复项],递增的子序列为深黑色。
{ 15,17,11,18,14,13,57,51,58,54,53,55,71,78,74,73,75,84,83,85,43,45,35 }
[请注意,我们只对严格增加子序列感兴趣]
[您无法更改序列中元素的顺序,因此示例序列中没有子序列[37]]
- 我们有长度为4的递增子序列,即1578,但没有长度为5的子序列,因此我们考虑最长的递增子序列的长度= 4。
输入:
a 1 a 2 ... a N (序列)
所有数字都是小于10的正整数3
N <= 1000
输出:
一个整数,表示输入序列最长的递增子序列的长度。
sample input(1)
1 2 4 2 5
sample output(1)
4
sample input(2)
1 5 7 1 8 4 3 5
sample output(2)
4
您的代码应及时运行,请在这种情况下测试您的代码,然后在此处提交(此链接还包含我的290字节c ++ 11解决方案)
您可以从文件/标准输入中获取输入,也可以将其作为函数参数使用,也可以将输出打印到文件/标准输出中,或者在编写函数时仅返回值
计分板
function f(){...})或内部函数(just ...)的字节数吗?如果我们计算外部函数,是否允许匿名函数?