
a1=find(A(:,1)==0)a2=find(A(:,7)==0)
aa=union(a1,a2)
A(aa,:)=[]
dA=diff(A,1,2)
[I,J]=find(dA==0)
A(I,:)=[]
s = input('任意输入册信返伏n个不重复的整数序列(如:12,13,15,1)\n','s')A = str2num(s)
m = length(A)
id = perms(1:m)
R = A(id)
任意输入n个不重州世轮复的整数序列(如:12,13,15,1)
5,12,1
R =
1 12 5
1 5 12
12 1 5
12 5 1
5 12 1
5 1 12
哈缺返哈,我用派贺的是"递增进位制数法"(方法源自网上)代码如下:
%%%%%%%%%%%%以下计算出新的排列%%%%%%%%%%%%%
%% Author by wacs5
%% 排列的总个数为n!
%% 在指定位置插入代码即可
%clc
%clear
n=3
n_1=prod(1:n)
allorder_K=zeros(1,n-1)
tic
for allorder_m=1:n_1%产生n!个排列
allorder_flag=zeros(1,n)
allorder_P=zeros(1,n)
for allorder_i=1:n-1
position=n-allorder_K(allorder_i)
allorder_j=n
while(allorder_j>=position)
if (allorder_flag(allorder_j)==1)
position=position-1
end
allorder_j=allorder_j-1
end
allorder_P(position)=n+1-allorder_i
allorder_flag(position)=1
end
for allorder_i=1:n
if (allorder_flag(allorder_i)==0)
allorder_P(allorder_i)=1
break
end
end
%%%%以下尘扮派更新K
for allorder_i=1:n-1
allorder_K(n-allorder_i)=mod(allorder_K(n-allorder_i)+1,allorder_i+1)
if (allorder_K(n-allorder_i)~=0)
break
end
end
%%%下面,可以引用allorder_P进行相关处理
allorder_P
end
toc
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)