如何解决显示所有可能的向量组合的问题 x =“abcdefghijklmnopqrstuvwxyz” 我会将它自己乘以它。 我想要这样的解决方案 “AA”, “AB”, “交流” ...... “ZA”, “ZB”,.. “ZZ” 我可以将每个元素编入索引。
我也想要相同乘法的解决方案,我将获得三个和四个相同的x向量的结果,即解决方案将是: “aaa”,“aab”......“zzz”和“aaaa”,“aaab”,......“zzzz”
答案 0 :(得分:3)
尝试使用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));
答案 1 :(得分:0)
如果将字母映射为整数(请参阅toascii),则可以通过在基数25(toascii('z') - toascii('a'))中添加数字来生成所有组合。例如,0 - > 'a',25 - > 'z',26 - > 'ba',等等。
这样您可以按顺序生成所有组合