这样算可以得到你要的答案,不过我估计这样做得到答案的有一定偶然性。
1: ( 81 , 82 , 83) => ( 81 , 82 , 83) 一个括号内的为可能值,
2: ( 81 , 82 , 80) => ( 81 , 82 )
3: ( 80 , 82 , 84) => ((82)) 二个括号内的为必然值
4: ( 80 , 81 , 82 , 83) => ((82)) 一旦序列中存在必然值则该略过
5: ( 80 , 81 , 82) => ((82))
6: ( 81 , 83 , 85) => ((82), 81, 83, 85) 和必然值序列不重合,加入可能值序列
7: ( 80 , 83 , 86) => ((82),(83)) 确定了第二个必然值。
8: ( 80 , 81 , 83 , 84) => ((82),(83))
9: ( 80 , 81 , 84 , 85) => ((82),(83), 80 , 81 , 84 , 85)
10: ( 80 , 81 , 85 , 86) => ((82),(83), 80 , 81 , 85)
11: ( 80 , 81 , 86 , 85) => ((82),(83), 80 , 81 , 85)
12: ( 82 , 83 , 84) => ((82),(83), 80 , 81 , 85)
13: ( 82 , 83 , 81) => ((82),(83), 80 , 81 , 85)
14: ( 80 , 82 , 83 , 85) => ((82),(83), 80 , 81 ,85)
15: ( 82 , 84 , 86) => ((82),(83), 80 , 81 ,85)
16: ( 82 , 84 , 80) => ((82),(83), 80 , 81 ,85)
17: ( 80 , 82 , 84 , 86) => ((82),(83), 80 , 81 ,85)
18: ( 80 , 82 , 85 , 83) => ((82),(83), 80 , 81 ,85)
19: ( 80 , 82 , 86 , 84) => ((82),(83), 80 , 81 ,85)
20: ( 83 , 84 , 85) => ((82),(83), 80 , 81 ,85)
21: ( 83 , 84 , 82) => ((82),(83), 80 , 81 ,85)
22: ( 80 , 83 , 84 , 81) => ((82),(83), 80 , 81 ,85)
23: ( 83 , 85 , 81) => ((82),(83), 80 , 81 ,85)
24: ( 80 , 83 , 85 , 82) => ((82),(83), 80 , 81 ,85)
25: ( 83 , 86 , 80) => ((82),(83), 80 , 81 ,85)
26: ( 84 , 85 , 86) => ((82),(83),(85)) 上面都被必然值忽略,这里只有一个值呈现可能值,成为必然值
27: ( 84 , 85 , 83) => ((82),(83),(85))
28: ( 80 , 84 , 85 , 81) => ((82),(83),(85))
29: ( 84 , 86 , 82) => ((82),(83),(85))
30: ( 80 , 84 , 86 , 82) => ((82),(83),(85))
31: ( 85 , 86 , 84) => ((82),(83),(85))
32: ( 80 , 85 , 86 , 81) => ((82),(83),(85))
33: ( 81 , 82 , 83 , 80) => ((82),(83),(85))
34: ( 81 , 82 , 84 , 85) => ((82),(83),(85))
35: ( 81 , 82 , 85 , 86) => ((82),(83),(85))
36: ( 81 , 82 , 86 , 85) => ((82),(83),(85))
37: ( 81 , 83 , 84 , 80) => ((82),(83),(85))
38: ( 81 , 83 , 86 , 84) => ((82),(83),(85))
39: ( 81 , 84 , 85 , 80) => ((82),(83),(85))
40: ( 81 , 84 , 86 , 83) => ((82),(83),(85))
41: ( 81 , 85 , 86 , 80) => ((82),(83),(85))
42: ( 82 , 83 , 84 , 81) => ((82),(83),(85))
43: ( 82 , 83 , 85 , 80) => ((82),(83),(85))
44: ( 82 , 83 , 86 , 85) => ((82),(83),(85))
45: ( 82 , 84 , 85 , 81) => ((82),(83),(85))
46: ( 82 , 84 , 86 , 80) => ((82),(83),(85))
47: ( 82 , 85 , 86 , 81) => ((82),(83),(85))
48: ( 83 , 84 , 85 , 82) => ((82),(83),(85))
49: ( 83 , 84 , 86 , 81) => ((82),(83),(85))
50: ( 83 , 85 , 86 , 82) => ((82),(83),(85))
51: ( 84 , 85 , 86 , 83) => ((82),(83),(85))
这样只要整序列过滤一次就完成任务了。比算交集的做法要少计算很多量。
基本规则是,如果当前这个序列中不存在必然值序列,那么把所有的当前值序列充当成可能值序列,如果此时已经有可能值序列,则应和原可能值序列做并集。如果当前值序列中有任何一个值包含在必然值序列中的任何一个值,该序列完全忽略。如果合并后的可能值序列只有一个,那么自动成为必然值序列。