zoukankan      html  css  js  c++  java
  • 全排列 (codevs 1294)题解

    【题目描述】

        给出一个n, 请输出n的所有全排列(按字典序输出)。

    【样例输入】

         3

    【样例输出】

         1 2 3

        1 3 2

        2 1 3

        2 3 1

        3 1 2

        3 2 1

    【解题思路】

         听说C++有作弊器(求全排列的函数),羡慕不已啊……不过pascal也挺简单的,简单的递归回溯,我用了一个集合保证所有数字不重复,不知哪位神犇能给出更好的办法请写在评论处,谢谢!

    【代码实现】

    var n,w:longint;
        a:array[1..10]of longint;
        b:set of 1..10;//集合存储已用的数字
    procedure try(m:longint);
    var i:longint;
    begin
     if m=n then//一个排列生成,输出
      begin
       for i:=1 to n do
        write(a[i],' ');
       writeln;
      end
     else
      for i:=1 to n do
       if not (i in b) then
        begin
         inc(w);
         a[w]:=i;
         b:=b+[i];//存入a数组,方便输出,并标记
         try(m+1);//递归
         b:=b-[i];
         dec(w);//回溯
        end;
    end;
    begin
     readln(n);
     try(0);
    end.
    全排列
  • 相关阅读:
    wcf1
    js 动画
    js排序演示
    jquery 元素定位
    svn
    jquery 取得元素
    winform 动画
    简单程序中用vs画uml
    codemaid
    js cookie
  • 原文地址:https://www.cnblogs.com/PengBoLiuXu/p/4481959.html
Copyright © 2011-2022 走看看