#include <bits/stdc++.h>
using namespace std;
int main()
{
string s = "abc";
cout << s << endl;
while (next_permutation(s.begin(), s.end())) {
cout << s << endl;
}
return 0;
}
C++, 的stl 真的好用,但是呢,Java不能认输,可以自己来实现:
递归实现:
/**
* Java implements the Permutation
*/
public class Permutation {
static int count = 0;
static void permutaion(char[] cs, int index) {
// char[] cs = s.toCharArray();
if (index > cs.length) return;
if (index == cs.length) {
System.out.println(new String(cs));
count++;
}
for (int i = index; i < cs.length; i++) {
swap(cs, index, i);
permutaion(cs, index+1);
swap(cs, index, i);
}
}
static void swap(char[] cs, int index, int target) {
char tmp = cs[index];
cs[index] = cs[target];
cs[target] = tmp;
}
public static void main(String[] args) {
// char[] cs = {'a', 'b', 'c', 'd'};
String s = "abcd";
char[] cs = s.toCharArray();
Permutation a = new Permutation();
a.permutaion(cs, 0);
System.out.println(count);
}
}