直接上函数
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
string s;
cin>>s;
do
{
cout<<s<<endl;
} while (next_permutation(s.begin(),s.end()));
return 0;
}
dfs
#include <iostream>
using namespace std;
int p[100];//记录相同的数字
int a[100];//存下来
int n;//输入
void f(int k)
{
if (k == n + 1)//当都弄完一遍的时候
{
for (int i = 1; i <= n; i++)
{
cout<<a[i];
}
cout << endl;
}
for (int i = 1; i <= n; i++)//每次都是从1开始
{
if (p[i] == 1)//如果在当前的数中这个数原来被a存过 就不能再要了
continue;
a[k]=i;//报存
p[i] = 1;//标记
f(k + 1);
p[i] = 0;//回到初始 这个可能难理解一点 因为原来在上面改变过了 所以这里要变回来
}
}
int main()
{
cin >> n;
f(1);
return 0;
}
来源:CSDN
作者:陌陌623
链接:https://blog.csdn.net/weixin_45653525/article/details/103793161