版权声明:喜欢就点个赞吧,有啥疑问可以留言交流~ https://blog.csdn.net/m0_38015368/article/details/80572835
问题描述:
对输入的元素进行全排列。
代码实现:
#include <bits/stdc++.h>
using namespace std;
void InPut(int * &_list, int &n)
{
scanf("%d", &n);
_list = (int *)malloc(sizeof(int) * (n + 1));
for(int i = 1; i <= n; ++i)
{
scanf("%d", _list + i);
// printf("%d\n", *(_list + i));
}
}
void OutPut(int _list[], int n)
{
for(int i = 1; i <= n; ++i)
printf("%d", _list[i]);
printf("\n");
}
void Swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void Perm(int _list[], int k, int n)
{
if(k == n)
OutPut(_list, n);
else
{
for(int i = k; i <= n; ++i)
{
Swap(_list[k], _list[i]);
Perm(_list, k + 1, n);
Swap(_list[k], _list[i]);
}
}
}
int main()
{
int *_list;
int n;
InPut(_list, n);
Perm(_list, 1, n);
}
核心代码来自 计算机算法设计与分析第四版。
运行截图: