如何解决显示向量
所有可能组合的问题?x ="abcdefghijklmnopqrstuvwxyz"
我将把它乘以它自己。我想要一个这样的解决方案:
"aa","ab","ac",..."za","zb",.."zz"
我可以索引每个元素
我还想要同样的乘法的解,我将得到三个和四个相同的x向量的结果,即解将是:
"aaa","aab"..."zzz" and "aaaa","aaab",..."zzzz"
尝试ndgrid()
函数。它的结果取决于输出参数的数量。这是所有3个重复集合的答案
octave> [x y z] = ndgrid ("abcdef");
octave> allcombs = [x(:) y(:) z(:)];
我不打印结果,因为它很长。使用ndgrid()
, perms()
和nchoosek()
函数可以很容易地解决这类问题。
对于n长度,使用nthargout()
。
octave> cart = nthargout ([1:n], @ndgrid, "abcdef");
octave> combs = cell2mat (cellfun (@(c) c(:), cart, "UniformOutput", false));
如果将字母映射为整数(参见toascii),则可以通过以25为基数的数字相加(toascii('z') - toascii('a'))来生成所有组合。例如,0 -> ' a ', 25 -> ' z ', 26 ->"ba",等等。
这样就可以按顺序生成所有的组合