8皇后

    技术2024-07-02  69

    #include "stdio.h" #include "string.h" static int count=0; int maze[20][20]; int prev[20];            // prev[i] represents the queue xpos in i ypos int abs(int x) {     return x>0?x:-x; } bool can(int i,int j)    //i ypos  put j xpos {     for(int t=1;t<i;t++)     {         if( prev[t]==j || abs(prev[t]-j)==abs(t-i) )             return false;     }     return true; } void queue(int n) {     if(n==9)     {    count++;         for(int t1=1;t1<=8;t1++)         {    for(int t2=1;t2<=8;t2++)                 printf("%d",maze[t1][t2]);             printf("/n");         }         printf("/n");         printf("/n");         printf("/n");         printf("%d",count);         printf("/n");         printf("/n");         printf("/n");                 return;     }     for(int i=1;i<=8;i++)     {         if( can(n,i) )         {                prev[n]=i;             maze[n][i]=1;             queue(n+1);             maze[n][i]=0;             prev[n]=0;         }     } } int main() {     memset(maze,0,sizeof(maze));     memset(prev,0,sizeof(prev));     queue(1);     return 0; }

    最新回复(0)