pascal 实现permute
来源:互联网 发布:完美软件 编辑:程序博客网 时间:2024/06/06 13:08
假定输入一个数字n,定义n 为从1开始的数组的长度(0<n<10),对该数组进行完全乱序排序,要求输出所有该数组的乱序排序并且没有重复。
先给出程序:
program YS;
var
a,b:array[0..26] of integer;
j,k,n:integer;
procedure permute(i:integer);
var x,y:integer;
begin
x:=1;
while x<= n do
begin
if b[x]=0 then
begin
b[x]:=a[n-i+1];
if(b[x]<>0) and (i=1) then
begin
for y:=1 to n do write(b[y]);
writeln;
b[x]:=0;{完成数字树,输出后最后一层排序的数字归零,重新变成未完成数字树}
end;
if i >1 then permute(i-1);
if (i>1) then b[x]:=0; {若未完成数字树,则旧指针归零}
x:=x+1;{旧指针已进行过完全排序,寻找下一个新指针位置}
end
else x:=x+1;{当前位置被占用,寻找下一个位置}
end;
end;
begin{main}
writeln('input length');
repeat
readln(n);
if n>=10 then writeln('bad length');
until n<10;
for k:=1 to n do begin a[k]:=k ; b[k]:=0; end;{生成原始数组和待排序数组}
permute(n);
writeln;
end.
子函数permute实现的是:a数组为初始数组,b数组为排序数组。i表示进行第i个数字的排序(第i层)。while循环的作用是从1到n查找未被先前数字覆盖的可用位置。x是指针,用于指示当前排序层的位置。i指针从a1开始,对a数组每个数字进行到b数组的安放。若所有a数组数字安放完成,则认为数字树生成完毕,进行输出,并且指针移动并生成新的数字树。
该程序进行小改动后能输出字母的permutation。
若程序有错误或改进方法,欢迎大家提出意见。
- pascal 实现permute
- permute 指令
- permute命令
- Permute Program
- permute -排列
- pascal语言实现二叉排序树
- 关于目标检测ssd实现代码中permute layer和flatten layer的作用
- permute by sorting
- matlab permute函数
- 用宏实现pascal语法
- pascal
- Pascal
- PASCAL
- MATLAB中permute的运用
- matlab---之permute,im2double,double
- 用c实现pascal词法分析器
- 用.net实现mini-pascal词法分析器
- PASCAL实现平衡有序树AVL树
- JavaSe基础XX12——面向对象——[异常_2]
- UVA321
- 【C++ Primer每日刷】之一 迭代器
- F28377D学习系列(一)
- Java并发包中的几种ExecutorService
- pascal 实现permute
- find grep 命令使用
- MSDN如何安装
- Slow HTTP Denial of Service Attack
- JS 实现简单的Table表格分页效果(假分页)
- Java中判断字符串是否为数字的五种方法
- java模拟http请求带参数以及服务端接收
- Linux命令之chmod(修改文件权限)
- OpenCV:cvGoodFeaturesToTrack 和cvFindCorner特征点检测