首页 > 学院 > 开发设计 > 正文

八皇后问题,C语言实现,求出第一行第一列有皇后的解

2019-11-06 07:34:39
字体:
来源:转载
供稿:网友

题目如图所示: 这里写图片描述

#include<iostream>#include<cmath>#define N 8using namespace std;static int position[N];static int chessboard[N][N];void out_put_01(){ int i; cout<<"{ "; for(i=0; i<N; ++i) { if(i == N-1) cout<<(position[i]+1); else cout<<(position[i]+1)<<", "; } cout<<" }"<<endl;}void eigth_queen(int n){ int i, j, flag; //当position[N]都放满了,说明找到八皇后的解 if(n==N) { //只输出第一行第一列有皇后的解 if(position[0] == 0) out_put_01(); return; } for(i=0; i<N; ++i) { //position[n]存放的是第n行的第i个位置,即在第n行i列放置皇后 position[n]=i; flag=1; for(j=0; j<n; ++j) { //第n行与前j行是否同列或正反斜线上 if(position[n]==position[j] || abs(position[n]-position[j]) == (n-j)) flag=0; } //若这一行(即第n行没有冲突),则递归向下一行寻找皇后要放置的位置 if(flag) eigth_queen(n+1); }}int main(){ eigth_queen(0); return 0;}

运行结果: 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表