问题 A: 全排列问题
内存限制:128 MB 时间限制:1.000 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:外部导入
提交:3435 通过:1771
题目描述
要求计算从1到N的N个整数所能构成的所有排列,并按照字典顺序依次输出。
输入格式
输入为一组整数,每行为一个整数N,N<8,结尾行为0。
输出格式
对每一个输入N,按照字典序输出1到N的所有排列,数字中间用空格隔开,每个排列的输出占一行。
输入样例 复制
2
3
0
输出样例 复制
1 2
2 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
分类标签
#include <iostream>
#include<cstring>
#include <cstdio>
using
namespace
std;
void
function(
int
num[],
int
N,
int
x){
if
(x==N){
for
(
int
i=0;i<N;i++) cout<<num[i]<<
" "
;
cout<<endl;
return
;
}
for
(
int
i=1;i<=N;i++){
bool
isok=
true
;
for
(
int
j=0;j<=x-1;j++){
if
(i==num[j]) isok=
false
;
}
if
(isok==
true
){
num[x]=i;
function(num,N,x+1);
}
}
}
int
main(){
int
N;
while
(cin>>N){
int
num[N];
function(num,N,0);
}
return
0;
}