0
点赞
收藏
分享

微信扫一扫

lua 全排列


栗子

123

排列 

123

132

213

231

321

312

。这个递归 每一个数轮流当做前面的数 后面的数全排列 到了最后就是3的全排列 2的全排列 1的全排列 

然后还要处理重复数 ij之间不能有重复 因为全排列的时候 有重复数字 排列的结果有程序就有重复的

完整马

a={1,2,3};
local i;
local r
function Can(i,j)
local z;
for z=i,j-1,1 do
if (a[z]==a[j])then
return 0
end
end
return 1
end

function A(i)
if(i ==3)then
print(a[1],a[2],a[3])
return
end
local j
for j=i,3,1 do

if (Can(i,j)>0)then
local t=a[i];//交换
a[i]=a[j];
a[j]=t;
A(i+1);//递归n-1
t=a[i];//回溯 交换回来恢复原样
a[i]=a[j];
a[j]=t;
end
end
end
A(1)



举报

相关推荐

0 条评论