限制组合(算法)

时间:2018-03-25 06:19:54

标签: algorithm

考虑以下示例:

我有一个包含5个项目的列表,每个项目的出现次数为1或0:

{a, b, c, d, e}

限制组合如下:

  

在任何给定时间,a,c和e的出现不能为1。

     

b,d和e的出现在任何给定时间都不能为1。

基本上,如果在数据库中发现ac的出现已经为1,并且不允许给定输入为e(给出e出现1)(第1条)或反之亦然。

另一个示例,de在数据库中的出现次数分别为1,不允许b的新输入(在第2节之后)。

一个更加坚实的例子:

LETTER   |   COUNT(OCCURRENCE)
------------------------------
a        |   1
b        |   1
c        |   1
d        |   0
e        |   0

因此,e的新输入将因违反第1条而被拒绝。

此解决方案的最佳算法/实践是什么?

我想过有很多if-else语句,但这似乎不够高效。如果我有一个动态的元素列表怎么办?或者至少对这个程序有更好的可扩展性。

1 个答案:

答案 0 :(得分:0)

正如BKassem(我认为)在评论中提到的(无论出于何种原因被删除)。

此方案的算法:

(count(a) * count(c) * count(e)) == 0 //proceed to further actions

完美无瑕地工作!