题目
输出全排列
请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。
输入格式:
输入给出正整数n(<10)。
输出格式:
输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序。
代码:
#include <iostream>
#include<algorithm>
using namespace std;
int main(int argc, char** argv) {
string str;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
str+=i+1+'0';//这里的加操作是为了使输出字符
}
sort(str.begin(),str.end());
do{
cout<<str<<endl;
}while(next_permutation(str.begin(),str.end()));//指的是下一个排列,可以人为控制是否输出下一个排列
return 0;
}
注意如何书写这中全排列,同时注意要排一下序
这里可以理解为每一个排序都占据了该数组,每次输出该数组即可显示出全部序列。注意以后使用时要注意全排列输出要运用数组。