第一次实验:NPC,回溯,八皇后问题

来源:互联网 发布:淘宝上日本代购哪家好 编辑:程序博客网 时间:2024/06/05 02:35
#include <_dbdao.h>#include <stdlib.h>#include <stdio.h>       //同栏是否有皇后,1表示有  int column[9];  //右上至左下是否有皇后  int rup[17];  //左上至右下是否有皇后  int lup[17];  //解答  int queen[100];  //解答编号  int num;void initial_Queen(){               for(int i=1;i<=8;i++){                  column[i]=1;              }              for(int i=1;i<=2*8;i++){                  rup[i]=lup[i]=1;                  queen = new int[8+1];              }  }          void backtrack(int i){              bool condition = (i > 8);if(condition == true){                  showAnswer();              }              else{                  for(int j=1;j<=8;j++){                      if(column[j]==1&&rup[i+j]==1&&lup[i-j+8]==1){                          queen[i]=j;//设定为占用                          column[j]=rup[i+j]=lup[i-j+8]=0;                          backtrack(i+1);                          column[j]=rup[i+j]=lup[i-j+8]=1;                      }                  }              }          }               void showAnswer(){              num++;  putchar('\n');            printf("解答%d",num);              for(int y=1;y <= 8; y+=1){                  for(int x=1; x <= 8; x+=1){                      if(queen[y]==x){                          printf("Q");                      }                      else{                          printf("X");                      }                  }                  putchar('\n');              }  }          int main(void) {       initial_Queen();        backtrack(1);      return 0;     }  


0 0
原创粉丝点击