Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据4个标志的哪个子集执行条件_Java_Algorithm - Fatal编程技术网

Java 根据4个标志的哪个子集执行条件

Java 根据4个标志的哪个子集执行条件,java,algorithm,Java,Algorithm,我想找到一个有效的算法,基于它是哪个子集。每个子集都要执行新的条件。 例如:我有4个标志ABCD,每个子集都有单独的条件。解决以下情况的最有效算法是什么。这很容易,但我想找到最有效的算法。有没有一种算法可以解决这类问题 A B C D 0 0 0 0 Subset 1 Execute Condition 1 0 0 0 1 Subset 2 Execute Condition 2 0 0 1 0 Subset

我想找到一个有效的算法,基于它是哪个子集。每个子集都要执行新的条件。 例如:我有4个标志ABCD,每个子集都有单独的条件。解决以下情况的最有效算法是什么。这很容易,但我想找到最有效的算法。有没有一种算法可以解决这类问题

A   B   C   D       
0   0   0   0   Subset 1    Execute Condition 1
0   0   0   1   Subset 2    Execute Condition 2
0   0   1   0   Subset 3    Execute Condition 3
0   0   1   1   Subset 4    Execute Condition 4
0   1   0   0   Subset 5    Execute Condition 5
0   1   0   1   Subset 6    Execute Condition 6
0   1   1   0   Subset 7    Execute Condition 7
0   1   1   1   Subset 8    Execute Condition 8
1   0   0   0   Subset 9    Execute Condition 9
1   0   0   1   Subset 10   Execute Condition 10
1   0   1   0   Subset 11   Execute Condition 11
1   0   1   1   Subset 12   Execute Condition 12
1   1   0   0   Subset 13   Execute Condition 13
1   1   0   1   Subset 14   Execute Condition 14
1   1   1   0   Subset 15   Execute Condition 15
1   1   1   1   Subset 16   Execute Condition 16
可用于生成所有子集。有四个值。因此,您有2^4个子集。您所要做的就是将这个掩码迭代2^4次,并用四个值中的每一个来屏蔽它。在每次迭代中,掩蔽的结果是给定值的子集。这里有一个想法:

allSubsets = {}
for mask in range(1<<4):
  subsets = []
  for i in range(0,3):
    val = mask & (1<<i)
    if(val)
      subsets.append(a[i])     # Individual subset. Here assume array a has 4 values. Can be just 1s and 0s as in your case.
  allSubsets[mask] = subset    #keep appending each generated subset

return allSubsets   # Do your operation by iterating on each of these subsets
allsubset={}

对于范围内的掩码(1二叉树-O(对数n)。对于少量标志,将它们连接为form和integer,然后使用表查找检索函数指针或对象,然后在该对象上执行方法。为什么会有Mainframe标记?这是错误的。我已删除Mainframe标记。条件是否直接取决于标志?