一、概念:回溯法也是一种枚举,但是回溯法将枚举(生成)和检查有机结合起来,从而减少了不必要的枚举。。
二、经典八皇后问题。
#include<iostream> #include<cmath> using namespace std;int vis[100]; int store[100]; int n; void queenProblem(int floor){if(floor==n+1){for(int i=1;i<=n;i++){cout<<store[i]<<" ";}cout<<endl;}elsefor(int i=1;i<=n;i++){int flag=1;for(int j=1;j<floor;j++){if( abs(floor-j)==abs(i-store[j]) || i==store[j]){ //设置条件,减少不必要的枚举flag=0;break;} }if(flag){store[floor]=i;queenProblem(floor+1); }} } int main(){while(cin>>n){queenProblem(1);} }