fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. #define pb push_back
  5. #define gcd(a,b) __gcd(a,b)
  6. #define all(n) n.begin(),n.end()
  7. #define lcm(a,b) a*b/gcd(a,b)
  8. bool cmp(int a, int b) {
  9. return a > b;
  10. }
  11. // vector<ll> divisors_num(ll n) {
  12. // vector<ll> div;
  13.  
  14. // for (int i = 1; i * i <= n; i++) {
  15. // if (n % i == 0) {
  16. // div.pb(i);
  17. // if (n / i != i) {
  18. // div.pb(n / i);
  19. // }
  20. // }
  21.  
  22. // }
  23. // return div;
  24. // }
  25. // void printvec(vector<ll> v) {
  26. // for (auto x : v) {
  27. // cout << x << " ";
  28. // }
  29. // cout << endl;
  30. // }
  31.  
  32.  
  33.  
  34. int ld[15] = {0}, rd[15] = {0}, row[8] = {0};
  35. ll cnt = 0;
  36. ll did_rec=0;
  37. ll did_back=0;
  38. void col(vector<vector<char>> &v , ll j) {
  39. if (j > 7) {
  40. cnt++;
  41. for (int i = 0 ; i < 8 ; i++) {
  42. for (int j = 0 ; j < 8 ; j++) {
  43. cout<< v[i][j];
  44. }
  45. cout<<endl;
  46. }
  47. cout<<"Recursion steps: "<<did_rec<<" "<<"backtrack steps: "<<did_back<<endl;
  48. did_rec=0;
  49. did_back=0;
  50. return;
  51. }
  52. for (int i = 0 ; i < 8 ; i++) {
  53. if (v[i][j] == '.' && ld[i - j + 7] == 0 && rd[i + j] == 0 && row[i] == 0) {
  54. ld[i - j + 7] = 1, rd[i + j] = 1 , row[i] = 1;
  55. v[i][j]='Q';
  56. did_rec++;
  57. col(v, j + 1);
  58. v[i][j]='.';
  59. did_back++;
  60. ld[i - j + 7] = 0, rd[i + j] = 0 , row[i] = 0;
  61. }
  62. }
  63.  
  64.  
  65. }
  66.  
  67.  
  68. void solve() {
  69. vector<vector<char>> v(8, vector<char>(8));
  70. for (int i = 0 ; i < 8 ; i++) {
  71. for (int j = 0 ; j < 8 ; j++) {
  72. cin >> v[i][j];
  73. }
  74.  
  75. }
  76. col(v, 0);
  77. cout << cnt << endl;
  78.  
  79.  
  80.  
  81.  
  82. }
  83.  
  84.  
  85.  
  86. int main() {
  87.  
  88. #ifdef ONLINEJUDGE
  89. clock_t tStart = clock();
  90. freopen("input.txt", "r", stdin); //can need to change file . this one for taking input
  91. freopen("output.txt", "w", stdout); // this one for output
  92. #endif
  93.  
  94. // ll t;
  95. // cin >> t;
  96. // while (t--) {
  97. // solve();
  98.  
  99.  
  100. // }
  101. solve();
  102.  
  103.  
  104. #ifdef ONLINEJUDGE
  105. fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC); // this line gives your code runtime
  106. #endif
  107.  
  108. return 0;
  109. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
0