全排列 (codevs 1294)题解
2024-09-29 08:23:56
【题目描述】
给出一个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[..]of longint;
b:set of ..;//集合存储已用的数字
procedure try(m:longint);
var i:longint;
begin
if m=n then//一个排列生成,输出
begin
for i:= to n do
write(a[i],' ');
writeln;
end
else
for i:= to n do
if not (i in b) then
begin
inc(w);
a[w]:=i;
b:=b+[i];//存入a数组,方便输出,并标记
try(m+);//递归
b:=b-[i];
dec(w);//回溯
end;
end;
begin
readln(n);
try();
end.
全排列
最新文章
- IT励志与指导文章合集(链接)
- Laravel学习笔记(六)数据库 数据库填充
- vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏
- Edmond_Karp算法
- Knockout.Js官网学习(click绑定)
- JS单例设计模式
- Android studio快捷键Mac版本
- 移动商城第四篇【Controller配置、添加品牌之文件上传和数据校验】
- LPCTSTR LPCWSTR LPCSTR 含义
- SSH上一个随笔的基础上添加上hibernate支持
- (二)surging 微服务框架使用系列之surging 的准备工作consul安装
- jdk安装及配置
- Python3的string库模板的应用
- js语言精粹
- collection.Counter
- Awk基础
- laravel 5.5 在构造函数使用Session
- PHP任意文件上传漏洞CVE-2015-2348浅析
- 音乐播放插件Aplayer+WebAPI的使用【附下载】
- git 命令02