现在的位置: 首页 > 综合 > 正文

简洁八皇后

2013年03月24日 ⁄ 综合 ⁄ 共 665字 ⁄ 字号 评论关闭
#include <stdio.h>

#define LEN 8  //棋盘规模,长/宽 

static int y[LEN]={0};  //每一行上,皇后列位置数组 

//显示截的棋盘布局,皇后用Q表示,空位置用*表示 
void Display(void)       
{
     static int num=0;
     printf("this is %d solution\n",num++);
     int i,j;
     for(i=0;i<LEN;i++){
         for(j=0;j<LEN;j++){
              if(j==y[i]) printf("Q ");
              else printf("* ");              
         }
         printf("\n");
     }
}
//测试位置(raw,vol) 能否放置 
int Test(int raw, int vol)
{
    int i;
    for(i=0;i<raw;i++)
    {
          //因为按行放置,所以行不会冲突,只需检测列,及正/斜对角线 
          if( vol==y[i] || vol==raw+(y[i]-i) || vol==-raw+(y[i]+i))
                return 0;                  
    }
    return 1;
}
//放置第raw行的皇后 
void Put(int raw)
{
     if(raw == LEN)
     {
          Display();
          return;  
     } 
     int i;
     for(i=0;i<LEN;i++)
     {
             if(Test(raw,i))
             {
                     y[raw]=i;
                     Put(raw+1); 
                     
             }                        
     }
}
void Queen(void)
{
     Put(0);   
}
int main(void)
{
    Queen();
    int i;
    i=10;
    for(i=0;i<10;i++){
        printf("hello\n");   
    }
    getchar();
    return 0;   
}

抱歉!评论已关闭.