Advertisement
frostblooded

Queens Problem Solution (with input)

Nov 18th, 2017
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. void print_table(vector<int>& v){
  7.     for(int i = 0; i < v.size(); i++){
  8.         cout << "(" << i << ", " << v[i] << ")" << endl;
  9.     }
  10. }
  11.  
  12. bool is_possible_pos(vector<int>& table, int i, int j){
  13.     for(int k = 0; k < i; k++){
  14.         if(k == i || table[k] == j){
  15.             return false;
  16.         }
  17.         if(k - table[k] == i - j){
  18.             return false;
  19.         }
  20.         if(k + table[k] == i + j){
  21.             return false;
  22.         }
  23.     }
  24.  
  25.     return true;
  26. }
  27.  
  28. void queens(vector<int>& table, int i = 0){
  29.     if(i == table.size()){
  30.         cout << "solution found..." << endl;
  31.         print_table(table);
  32.         return;
  33.     }
  34.  
  35.     for(int j = 0; j < table.size(); j++){
  36.         if(is_possible_pos(table, i, j)){
  37.             table[i] = j;
  38.             queens(table, i + 1);
  39.         }
  40.     }
  41. }
  42.  
  43. int main(){
  44.     int size;
  45.     cout << "Enter size: " << endl;
  46.     cin >> size;
  47.  
  48.     vector<int> table(size);
  49.     queens(table);
  50.  
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement