计算共有多少种可能的算法?

有三组区间,假设为A B C
A [1,8)
B [6,11)
C [9,15)

如上,A和B有交叉整数6、7,B和C也有交叉整数9、10。
现在要在每个区间生成三个随机数a b c,abc不能相同,比如不能是66x,77x,x99,x1010这样的。
请问有什么计算方法计算有多少种结果呢?

阅读 2.8k
2 个回答
for(int i1 = 1; i1 < 8; i1++) {
    for(int i2 = 6; i2 < 11; i2++) {
        if(i1 == i2) {
            continue;
        }
        for(int i3 = 9; i3 < 15; i3++) {
            if(i2 == i3) {
                continue;
            }
            String re = i1 + " " + i2 + " " + i3 ;
            System.out.println(re);
        }
    }
}
[1 2 3 4 5 6 7] => [1 2 3 4 5] + [6] + [7]
25 = [1 2 3 4 5] & [6 7 8 9 10]
4  = [6] & [7 8 9 10]
4  = [7] & [6 8 9 10]
// 25 = [1 2 3 4 5] & [6 7 8 9 10]
15 = [...]
5  = [.9.]
5  = [.10.]
// 4  = [6] & [7 8 9 10]
2  = [...]
1  = [.9.]
1  = [.10.]
// 4  = [7] & [6 8 9 10]
2  = [...]
1  = [.9.]
1  = [.10.]
// 15 + 2 + 2
19 = [...]
// 5 + 1 + 1
7  = [.9.]
// 5 + 1 + 1
7  = [.10.]
114 = 19 * 6 = [...] & [9 10 11 12 13 14]
35  = 7 * 5  = [.9.] & [10 11 12 13 14]
35  = 7 * 5  = [.9.] & [10 11 12 13 14]
184 = 114 + 35 + 35