传送门:点击打开链接

解题思路:用STL next_permutation可以过,还有搜索。

AC代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e3;
char str[N]={"12345678"}, buf[N];
int vis[N],len;
void arrange(int num) {
    if (num == len){
        for(int i=0;i<len;i++)
        {
        	printf("%c",buf[i]);
        	if(i==len-1)
				printf("\n");
			else
				printf(" ");
		}
        return;
    }
	for (int i = 0; i < len; ++i) {
        if (!vis[i]) {
            int j;
            for (j = i + 1; j < len; ++j) {
                if (vis[j] && str[i]==str[j]) {
                    break;
                }
            }
            if (j == len) {
                vis[i] = 1;
                buf[num] = str[i];
                arrange(num + 1);
                vis[i] = 0;
            }
        }
    }
}
int main()
{
    len = strlen(str);
    arrange(0);
    return 0;
}