time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C语言 > C语言解决八皇后问题

C语言解决八皇后问题

时间:2009-09-20 23:31 点击:1174次 字体:[ ]




#include   <stdio.h>

static   char   Queen[8][8];           /*存放棋盘*/
static   int   a[8];                           /*存放棋盘列的状况*/
static   int   b[15];                         /*存放棋盘主对角线的状况*/
static   int   c[15];                         /*存放棋盘从对角线的状况*/
static   int   iQueenNum=0;           /*存放方法次数*/

void   qu(int   i);

int   main(int   argc,   char   *argv[])
{
    int   iLine,iColumn;         /*   行       列*/

    /*初始化棋盘*/
    for   (iLine=0;iLine <8;iLine++){
            a[iLine]   =   0;
            for   (iColumn=0;iColumn <8;iColumn++){
                    Queen[iLine][iColumn]   =   '* ';
            }
    }
    /*初始化主,   从对角线*/
    for   (iLine=0;iLine <15;iLine++){
            b[iLine]   =   c[iLine]   =   0;
    }

    qu(0);
   
    system( "pause ");
    return   0;
}

void   qu(int   i){
          int   iColumn;

          for   (iColumn=0;iColumn <8;iColumn++){
                  if   (a[iColumn]==0   &&   b[i-iColumn+7]==0   &&   c[i+iColumn]==0){             /*判断是否可以摆放皇后*/
                        Queen[i][iColumn]   =   '@ ';
                        a[iColumn]   =   1;                               /*标记此位置已经摆放*/
                        b[i-iColumn+7]   =   1;                     /*标记此位置已经摆放*/
                        c[i+iColumn]   =   1;                       /*标记此位置已经摆放*/

                        if   (i <7){                     /*继续进行遍历*/
                                qu(i+1);
                        }

                        else{                           /*输出棋盘状态*/
                                int   iLine,iColumn;
                                printf( "%d\n ",++iQueenNum);
                                for   (iLine=0;iLine <8;iLine++){
                                        for   (iColumn=0;iColumn <8;iColumn++){
                                                printf( "%c ",Queen[iLine][iColumn]);
                                        }
                                        printf( "\n ");
                                }
                                printf( "\n\n\n ");
                                system( "pause ");
                        }
                       
                        /*如果出现错误,   则回溯*/
                        Queen[i][iColumn]   =   '* ';
                        a[iColumn]   =   0;
                        a[i-iColumn+7]   =   0;
                        c[i+iColumn]   =   0;
                  }
          }
}



本文地址 : http://www.fengfly.com/plus/view-77291-1.html
标签: C语言 八皇后
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类