怀恋啊,记得高中和大一之间的暑假里刚学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数组记录访问的二叉树的深度,基本上也能说是个栈吧。