八皇后回溯法

递归法:

 

#include<iostream> #include<cmath> #include<string> #include<fstream> #include<iomanip> using namespace std; int a[8]; int methods=0; ofstream fout("D://VCSun//backTrace//result.txt"); void drawChess() { if(!fout) { fout<<"Can't open!"; } methods++; fout<<endl; fout<<"这是第"<<methods<<"种排法。"<<endl; for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { if(a[i]==j) fout<<"★"; else fout<<"—"; } fout<<endl; } } bool safePlace(int k) { for(int i=0;i<k;i++) { if(a[i]==a[k]||abs(i-k)==abs(a[i]-a[k])) return false; } return true; } void solve(int i) { if(i>7) { drawChess(); return; } for(int c=0;c<8;c++) { a[i]=c; if(safePlace(i)) { solve(i+1); } } } void main() { solve(0); }

 

 

你可能感兴趣的:(八皇后回溯法)