迭代回溯:省去O(n)递归栈空间 Class Queen{ private: bool Place(int k); void Backtrack(int t); int n, //皇后个个数 *x; // 当前解 long sum; //当前已找到的可行方案 }; bool Queen::Place(int k) { for(int j=1;j <k; j++) if((abs(k-j) == abs(x[j]-x[k]))||(x[j]==x[k])) return false; return ture; } void Queen::Backtrak() { x[1]=0; int k=1; while(k>0) { x[k] +=1; while((x[k]<=n)&&!(Place(k))) x[k] +=1; if(x[k] <=n) { if(k==n) sum++; else { k++; x[k]=0; } } else { k--; } } }