1+ #include < bits/stdc++.h>
2+ using namespace std ;
3+
4+ bool check (long int a, long int b, vector<pair<long int , long int > >vp)
5+ {
6+ // cout<<"inside check"<<endl;
7+ // cout<<"size of vp "<<vp.size()<<endl;
8+ long int size = vp.size ();
9+ for (long int i=0 ;i<=size-1 ;i++)
10+ {
11+ // cout<<"inside loop"<<endl;
12+ if (vp[i].first == a || vp[i].second == b)
13+ return false ;
14+
15+ if (abs (a-vp[i].first ) == abs (b-vp[i].second ))
16+ return false ;
17+ }
18+ return true ;
19+ }
20+
21+ bool recur_fill (long int a, long int b, vector<pair<long int , long int > >&vp, long int n)
22+ {
23+ if (b == n && a < n)
24+ return false ;
25+ if (a == n)
26+ return true ;
27+ bool result = check (a, b, vp);
28+ if (result == true )
29+ {
30+ vp.push_back (make_pair (a, b));
31+ bool val = recur_fill (a+1 , 0 , vp, n);
32+ if (val == false )
33+ {
34+ pair<long int , long int >tmp = vp.back ();
35+ vp.pop_back ();
36+ return recur_fill (tmp.first , tmp.second +1 , vp, n);
37+ }
38+ }
39+ else
40+ {
41+ return recur_fill (a, b+1 , vp, n);
42+ }
43+
44+ return true ;
45+ }
46+
47+ int main ()
48+ {
49+ vector<pair<long int , long int > >vp;
50+ vp.clear ();
51+ long int n;
52+ cin>>n;
53+ recur_fill (0 , 0 , vp, n);
54+ for (long int i=0 ;i<=vp.size ()-1 ;i++)
55+ {
56+ long int c = vp[i].second ;
57+ for (long int j=0 ;j<c;j++)
58+ {
59+ cout<<" * " ;
60+ }
61+ cout<<" Q " ;
62+ for (long int j=c+1 ;j<n;j++)
63+ {
64+ cout<<" * " ;
65+ }
66+ cout<<endl;
67+ }
68+ }
0 commit comments