c++-全排列(树实现)
#include <iostream>
#include <cstring>
using namespace std;
int n;
int a[1000];
bool b[1000];
int c[10000][10000];
int d[1000];
string s[100000];
void sol(int locate,int y)//y层数 locate父节点位置
{
for (int i = 0; i < n; i++)
{
if (b[i])
{
b[i] = false;
c[y][d[y]] = a[i];
c[y][d[y] + 1] = locate;
d[y] += 2;
y++;
sol(d[y-1] - 2, y);
y--;
b[i] = true;
}
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
a[i] = i+1;
}
memset(d, 0, 1000);
memset(b, 1, 1000);
sol(0,0);
for (int i = 0; i < d[n-1]; i+=2)
{
int y = n - 1;
int w = c[n-1][i+1];
while (y >= 0)
{
char ca = c[y][w] + '0';
s[i]+=ca;
w = c[y][w + 1];
y--;
}
}
for (int i = 0; i < d[n - 1]; i++)
{
reverse(s[i].begin(), s[i].end());
cout << s[i];
cout << endl;
}
}
本文作者:云鲸啊
本文链接:https://www.cnblogs.com/yunjing/p/15967272.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步