让v = {x: x in {-1,0,1}}
使|v| = 9
向量x
中的每个元素v
都可以3
个可能的值-1,0
或1
如何生成向量v
的所有可能组合?
Example:
v = {1,0,-1,0,0,1,1,1,0},v = {-1,0,-1,1,0,0,1, 1,0}等...
我会3^9
组合吗?
答案 0 :(得分:1)
这个想法是这样的:
您对 v 的每个元素都有一个位置(在您的情况下为9):
- - - - - - - - -
每个位置可以包含三个不同的值(-1 | 0 | 1),然后组合的总数等于3 * 3 * 3 * 3 * 3 * 3 * 3 * 3 * 3 = 3 ^ 9。
生成此类组合仅模拟此过程,例如使用for循环,例如三个职位:
values[] = {-1, 0, 1};
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
for (k = 0; k < 3; k++)
print values[i], values[j], values[k]
在您的情况下,您需要九个嵌套循环!更简单的实现将涉及递归,但有时更难以理解。无论如何,这是一个想法:
values[] = {-1, 0, 1};
void generate(int position)
{
if (position == 0) {
println();
return;
}
for (int i = 0; i < 3; i++) {
print(values[i], ", ");
generate(position - 1);
}
}
// call the function with
generate(9);
这个another answer更详细地解释了递归生成器的工作原理。
答案 1 :(得分:1)
如果你使用的是python,你可以这样做:
import itertools
v = itertools.product([-1,0,1], repeat=9)
# v will be a generator
# to have the whole list as tuples
list_v = list(v)
# Verify the number of combination
print len(list(v))
它会给你:19683,或3 ^ 9