0

如何在 MATLAB 中生成顺序选择。我需要创建一个单词的所有排列,其中顺序很重要。因此,如果您想要所有有序选择 2 个字母,请使用“时间”一词。你应该收到

q=

em
ei
et
me
mi
mt
im
ie
it
tm
ti
te

我只能使用这样的代码对 4 个字母的单词执行此操作。

P = perms(S);
r = size(P);
if length(S) == k
    perms(S);
else
    q = P(1:2:r,1:k)

但我需要为所有长度的单词(最多 10 个)和直到单词末尾的任何数字生成它。

有任何想法吗?

4

1 回答 1

2

您可以使用permsunique

word = 'time';
result = perms(word);
result = unique(result(:,1:2),'rows');

在您的示例中,这给出了

>> result

result =

ei
em
et
ie
im
it
me
mi
mt
te
ti
tm

如果您希望在一个单词中多次出现相同的字母被明确计算:使用索引,而不是字母:

word = 'timid';
ind = perms(1:length(word));
ind = unique(ind(:,1:2),'rows');
result = word(ind);

例如,对于“胆小”这个词,这给出了

>> result

result =

ti
tm
ti
td
it
im
ii
id
mt
mi
mi
md
it
ii
im
id
dt
di
dm
di
于 2013-11-14T13:02:06.007 回答