描述
对于数组[1, 2, 3],他们按照从小到大的全排列是
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
现在给你一个正整数n,n小于8,输出数组[1, 2, …,n]的从小到大的全排列。
输入
输入有多行,每行一个整数。当输入0时结束输入。
输出
对于每组输入,输出该组的全排列。每一行是一种可能的排列,共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
典型的一个全排列问题,STL模板就可以干掉了。不过依然有值得学习的地方。
首先这是需要一个数组,如果取得是整型数组那么,那么在输出的时候不能直接输出cout<<数组名;
而如果是CHAR数组,那么可以这样输出。
还有注意格式问题,人家字符之间里面有空格,并且还提到了行尾没有空格。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a;
cin>>a;
while(a!=0){
int *b=new int[a];
for(int i=0;i<a;i++)
b[i]=i+1;
do
{
for(int i=0;i<a-1;i++)
cout<<b[i]<<" ";
cout<<b[a-1];
cout<<endl;
}
while(next_permutation(b,b+a));
cin>>a;
}
}