Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- int a[10][10];
- void print(int n)
- {
- cout<<"[";
- for(int i=0;i<n;i++)
- for(int j=0;j<n;j++)
- if(a[j][i]==1)cout<<j+1<<" ";
- cout<<"] ";
- }
- bool safe(int row,int col,int n)
- {
- int i=row,j=col;
- while(i>=0&&j>=0)
- {
- if(a[i][j]==1)return false;
- i--; j--;
- }
- i=row,j=col;
- while(i<n&&j>=0)
- {
- if(a[i][j]==1)return false;
- i++; j--;
- }
- j=col;
- while(j>=0)
- {
- if(a[row][j]==1)return false;
- j--;
- }
- return true;
- }
- bool queen(int col,int n)
- {
- if(col==n)
- {
- print(n);
- return true;
- }
- bool res=false;
- for(int i=0;i<n;i++)
- {
- if(safe(i,col,n))
- {
- a[i][col]=1;
- res=queen(col+1,n)||res;
- a[i][col]=0;
- }
- }
- return res;
- }
- int main()
- {
- int i,j,m,n,t;
- cin>>t;
- while(t--)
- {
- cin>>n;
- memset(a,0,sizeof(a));
- if(queen(0,n)==false)cout<<-1;
- cout<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement