假设我有一个块的集合。 12 个是红色,8 个是蓝色,5 个是黄色,1 个是绿色。我需要创建一个算法,将这些对象输出到单个数组中,没有红色块彼此相邻,没有蓝色块彼此相邻,等等。输出应如下所示:
红、蓝、红、蓝、红、蓝、黄、蓝、绿、红、黄等
到目前为止,在我的编程经验中,我多次遇到过必须编写算法来完成此操作的情况。我上次这样做是大约两年前,在一家初创公司工作。我用python实现了这样的算法,但是源代码不可用。我记得我至少花了 100 行来创作。
这个算法有名字吗?我不想再次实施它。
我不知道这个问题的名称。下面是我想出的解决这个问题的算法。
您需要跟踪剩余每个块的#。
repeat:
output 1 block of largest color set.
output 1 block from the second largest color set.
输出:
r br br br br br gr brgr brgr br br gr bg y
注意:在运行此算法之前,您需要检查最大颜色集的大小是否大于 1 + 其他颜色大小的总和。如果是的话,就没有解决办法了。
注意:不需要从第二大集合中挑选。循环中的第二个选择可以来自任何非最大颜色集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)