比如输入3,则输出是:
123
132
213
231
312
321
递归算法。转自这位大神
#include<iostream>
#include<string>
using namespace std;
void permutation(string pre, string remain) {
if (remain.size() == 1) {
cout << pre << remain << endl;
}
else {
for (int i = 0; i < remain.size(); i++) {
string newPre = pre + remain[i];
string newRemain = remain;
newRemain.erase(i, 1);
permutation(newPre, newRemain);
}
}
}
int main() {
int T,n ;
cin >> T;
while (T--) {
cin >> n;
string start = "";
for (char i = '1'; i < '1' + n; i++) {
start += i;
}
permutation("", start);
}
return 0;
}
用<algorithm>的next_permutation的方法(没什么技术含量):
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
int T,n ;
cin >> T;
while (T--) {
cin >> n;
string str = "";
for (char i = '1'; i < '1' + n; i++) {
str += i;
}
do {
cout << str << endl;
} while (next_permutation(str.begin(), str.begin() + n));
}
return 0;
}