您的位置:首页 > 其它

深度优先搜索生成全错序排列

2017-12-24 18:58 239 查看
怀恋啊,记得高中和大一之间的暑假里刚学c语言时我想写个24点程序,就搜到了用递归实现的这个全错序程序,当时看了好久才看懂,怀恋怀恋。

#include <algorithm>
#include <iostream>
using namespace std;

#define MAX_N 100

bool used[MAX_N];
int perm[MAX_N];

void permutation(int pos, int n)
{
if( pos == n ){
for (int i = 0; i < n; i++) {
cout << perm[i] << ' ';
}
cout << '\n';
}

for (int i = 0; i < n; i++) {
if (!used[i]) {
perm[pos] = i;
used[i] = true;
permutation(pos + 1, n);
used[i] = false;
}
}
}
/*
void permutation(int n)
{
for (int i = 0; i < n; i++) {
perm[i] = i;
}

do {

} while ( next_permutation(perm, perm + n) );
}
*/

int main()
{
for (int i = 0; i < 5; i++) {
perm[i] = i;
}

permutation(0, 5);

return 0;
}


注释掉的是库函数里的,书上说后面会学,还是位运算实现的,期待。

这里用used数组记录访问的二叉树的深度,基本上也能说是个栈吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: