根据此算法查找最大数量

时间:2015-02-16 02:34:46

标签: algorithm

鲍勃和他有N种颜色,都是直线排列的。他有兴趣选择一个特定的颜色子阵列。

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

结束集是一个集合,其中包含以最后一种颜色结尾且不包含第一种颜色的所有颜色子数组。

他现在遵循以下步骤:

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

    示例:设N = 4 n,数组为[1,2,1,2],此处答案为2。

    解释

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

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

    这两组中的共同集:{1,2}

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

    此套装的长度为2.So 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。所以我不能一次又一次地重复这整个过程。他们是更好的方法吗?

0 个答案:

没有答案