Advertisement
Pabon_SEC

8 Queens Chess Problem

Apr 29th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int queen[20],line;
  6.  
  7. int column[20],diagonal1[40],diagonal2[40],a,b;
  8.  
  9. void Eight_Queen(int _at,int n)
  10. {
  11.     int i;
  12.  
  13.     if(_at==n+1 && queen[b]==a)
  14.     {
  15.         printf("%2d     ",++line);
  16.  
  17.         for(i=1; i<=n; i++)
  18.         {
  19.             printf(" %d",queen[i]);
  20.         }
  21.  
  22.         puts("");
  23.  
  24.         return ;
  25.     }
  26.  
  27.     for(i=1; i<=n; i++)
  28.     {
  29.         if(column[i] || diagonal1[i+_at] || diagonal2[n+i-_at])
  30.             continue;
  31.  
  32.         queen[_at] = i;
  33.  
  34.         column[i] = diagonal1[i+_at] = diagonal2[n+i-_at] = 1;
  35.  
  36.         Eight_Queen(_at+1,n);
  37.  
  38.         column[i] = diagonal1[i+_at] = diagonal2[n+i-_at] = 0;
  39.     }
  40. }
  41.  
  42. int main()
  43. {
  44.     int test;
  45.  
  46.     scanf("%d",&test);
  47.  
  48.     while(test--)
  49.     {
  50.         scanf("%d%d",&a,&b);
  51.  
  52.         printf("SOLN       COLUMN\n");
  53.  
  54.         printf(" #      1 2 3 4 5 6 7 8\n\n");
  55.  
  56.         line = 0;
  57.  
  58.         Eight_Queen(1,8);
  59.  
  60.         if(test)
  61.         {
  62.             puts("");
  63.         }
  64.     }
  65.  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement