八皇后问题c++解法

xiaoxiao2025-05-01  10

#include <iostream> using namespace std; //递归算法解决八皇后问题。总共有92种解法。 int c[20], n=8, cnt=0; void print(){ for(int i=0; i<n; ++i){ for(int j=0; j<n; ++j){ if(j == c[i]) cout<<"1 "; else cout<<"0 "; } cout<<endl; } cout<<endl; } void search(int r){ if(r == n){ print(); ++cnt; return; } for(int i=0; i<n; ++i){ c[r] = i; int ok = 1; for(int j=0; j<r; ++j) if(c[r]==c[j] || r-j==c[r]-c[j] || r-j==c[j]-c[r]){ ok = 0; break; } if(ok) search(r+1); } } int main(){ search(0); cout<<cnt<<endl; return 0; }

这个解法本人挺喜欢的,打印出所有的排列组合

转载请注明原文地址: https://www.6miu.com/read-5029535.html

最新回复(0)