全排列

    xiaoxiao2021-12-14  22

    题目描述: 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

    输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1~n组成的所有不重复的数字序列,每行一个序列。

    输入输出样例 输入样例#1: 3 输出样例#1: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1

    程序如下: var a:array[1..9]of integer; b:array[1..9]of boolean; m:integer; procedure print; var i:integer; begin for i:=1 to m-1 do write(a[i],’ ‘); //打印格式有可能不一样 writeln(a[m]); end; procedure search(k:integer); var i:integer; begin for i:=1 to m do if b[i] then begin a[k]:=i; b[i]:=false; if k=m then print else search(k+1); b[i]:=true; //把数据复原 end; //这是一个回溯 end; begin readln(m); fillchar(b,sizeof(b),true); //把b数组全部设为真 search(1); end.

    一开始的是时候,一直错,找不出原因,最后发现居然是打印格式错了!!!

    转载请注明原文地址: https://ju.6miu.com/read-968301.html

    最新回复(0)