全排列
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列;
思路:dfs,path数组存路径,引入count计数当n=m时,path满了,输出路径。递归结束用回溯恢复状态达到123,132这种情况
#include <iostream>
using namespace std;
int a[3] = {1, 2, 3};
int visit[3] = {0};
int path[3] = {0};
int count = 0;
void dfs(int index) {
if (count >= 3) {
return;
}
if (visit[index] == 1) {
return;
}
visit[index] = 1;
path[count++] = a[index];
if (count == 3) {
for (int i = 0; i < 3; i++) {
cout << path[i];
}
cout << endl;
}
for (int i = 0; i < 3; i++) {
dfs(i);
}
visit[index] = 0;
count--;
}
int main() {
for (int i = 0; i < 3; i++) {
dfs(i);
}
return 0;
}
输出:
123
132
213
231
312
321