Algorithm 根据此算法查找最大数

Algorithm 根据此算法查找最大数,algorithm,Algorithm,鲍勃身上有N种颜色,都排成一条直线。他感兴趣的是挑选一个特定的颜色子阵列 预设是包含从第一种颜色开始但不包含最后一种颜色的所有颜色子阵列的集合 结束集是包含以最后一种颜色结束但不包含第一种颜色的所有颜色子阵列的集 他现在遵循以下步骤: 选择包含在预设和结束集中的最长子阵列。 把那个数字写在L表上。 删除最后一种颜色并应用相同的步骤,直到只剩下第一种颜色。 现在他将有N个数字,他写在列表L中。我们需要找到列表中的最大数字 示例:假设N=4 nand数组为[1,2,1,2],那么这里的答案是2 说明

鲍勃身上有N种颜色,都排成一条直线。他感兴趣的是挑选一个特定的颜色子阵列

预设是包含从第一种颜色开始但不包含最后一种颜色的所有颜色子阵列的集合

结束集是包含以最后一种颜色结束但不包含第一种颜色的所有颜色子阵列的集

他现在遵循以下步骤:

选择包含在预设和结束集中的最长子阵列。 把那个数字写在L表上。 删除最后一种颜色并应用相同的步骤,直到只剩下第一种颜色。 现在他将有N个数字,他写在列表L中。我们需要找到列表中的最大数字

示例:假设N=4 nand数组为[1,2,1,2],那么这里的答案是2

说明:

给定数组的预设:{1},{1,2},{1,2,1}

给定数组的结束集:{2,1,2},{1,2},{2}

这两个集合中的公共集合:{1,2}

元素数最大的集合:{1,2}

此集合的长度为2。因此2将被添加到列表中

==============================================================

现在从数组中删除最后一个数字,我们得到{1,2,1}

{1,2,1}的预设:{1},{1,2}

{1,2,1}的结束集:{2,1},{1}

这两个集合中的公共集合是:{1}

元素数最大的集合:{1}

这一套的长度是1。所以1将被添加到列表中

=============================================================

现在从数组中删除最后一个数字,我们得到{1,2}

{1,2}:{1}的预设

{1,2}:{2}的结束集

这两个集合中的公共集合:NULL。元素数最大的集合为-

此集合的长度为0。因此0将被添加到列表中

现在打印列表[2,1,0]=2的最大值


N可以高达10^6。所以我不能一次又一次地重复整个过程。是他们更好的方法吗?

使用DP或备忘录..备忘录=不重新计算已计算的内容。。主要使用关联数组存储以前的答案| DP=将问题拆分为足够容易计算的子问题,然后组合答案,主要使用递归| how=是否广泛,取决于您使用的编程语言using@Kokizzu我知道这些术语