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

あなたは使用することができpermsますunique

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);

たとえば、「timid」という単語を使用すると、次のようになります。

>> 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 に答える