我正在尝试编写一个Matlab来列出字典顺序中数字1到n的所有排列。我到目前为止的内容如下。我正在使用递归来尝试编写一个首先适用于n = 3的程序,然后看看我是否可以深入了解为任何n编写程序。到目前为止,我有6列中的2列n = 3:P=[1 2 3;1 3 2]
。我需要接下来的两列来简单地交换那些和两个。我不知道如何开始这样做。
function [P] = shoes(n)
if n == 1
P = 1;
elseif n == 2
P = [1 2; 2 1];
else
T = shoes(n-1) + 1;
G = ones(factorial(n-1),1);
P(1:2,1:3) = [G T];
end
答案 0 :(得分:2)
首先查看the documentation。如果按字典顺序排列,则表示按英文名称字母顺序排列,您可能希望使用名称填充输入,对其进行排序,然后置换。
如果我误解了你的想法,请评论或编辑问题&我稍后会回来查看。
提示:
如果再次陷入困境,请编辑发布到目前为止的内容以及您认为自己被困的地点/原因的问题。
看到你的代码后的提示。
答案 1 :(得分:1)
您似乎已经问过这个问题twice。您只需点击问题下方的“修改”链接并进行更新,而不是重新发布问题。我会在这里转发我给你的另一个问题的答案,但你应该删除其中一个。
如果您有以下矩阵:
A = [1 2 3; 1 3 2];
并且你希望所有的人成为两个人,而两个人成为一个人,以下将是最简单的方法:
B = A;
B(A == 1) = 2;
B(A == 2) = 1;