码迷,mamicode.com
首页 > 其他好文 > 详细

八皇后问题

时间:2017-07-01 23:26:57      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:highlight   ssm   abs   ++   div   布局   pre   class   printf   

#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
typedef struct node{
     int _x;
     int _y;
}chessman,*chess;
static int cnt=0;
static chessman c[Maxsize];
bool isOK(chess c,chessman cm,int c_len){  //判断是否能将当前皇后加入棋盘中
     for(int i=0;i<c_len;i++){
          if(c[i]._x==cm._x) return false;
          else if(c[i]._y==cm._y) return false;
          else if(abs(c[i]._x-cm._x)==abs(c[i]._y-cm._y)) return false;
     }
     return true;
}
void eight_queen(int k,int n,chess c){  //放置第k行的皇后
     if(k>=n){  //k等于n则说明为满足条件的布局,则输出
          cnt++;
          for(int m=0;m<n;m++){
               printf("(%d,%d) ",c[m]._x,c[m]._y);
          }
          printf("\n");
     }else{
          for(int i=0;i<n;i++){  //循环枚举所有x的可能取值
               chessman cm;
               cm._x=i;
               cm._y=k;
               if(isOK(c,cm,k)){
                    c[k]=cm;
                    eight_queen(k+1,n,c);
               }
          }
     }
}
int main(){
     eight_queen(0,8,c);
     printf("----------\n");
     printf("COUNT = %d\n",cnt);
     return 0;
}

  

八皇后问题

标签:highlight   ssm   abs   ++   div   布局   pre   class   printf   

原文地址:http://www.cnblogs.com/zuozz/p/7103662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!