回溯法 ------n后问题 续

 迭代回溯:省去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–; } } }

    原文作者:回溯法
    原文地址: https://blog.csdn.net/tjsinor2008/article/details/5606599
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞