Advertisement
Lauda

Untitled

Mar 14th, 2013
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int brR = 0;
  6.  
  7. bool isAttacking(int *tabla, int k)
  8. {
  9.     for (int i=0; i<k; i++)
  10.         if ((tabla[i] == tabla[k]) || (abs(tabla[i]-tabla[k])) == (k-i))
  11.             return false;
  12.     return true;
  13. }
  14.  
  15. void postaviQ(int *ploca, int val, int k = 0)
  16. {
  17.     if (k != val)
  18.     {
  19.         for (int i=0; i<val; i++)
  20.         {
  21.             ploca[k] = i;
  22.            
  23.             if (isAttacking(ploca, k))
  24.                 postaviQ(ploca, val, k+1);
  25.         }
  26.     }
  27.     else
  28.         brR++;
  29. }
  30.  
  31. int main(int argc, char *argv[])
  32. {
  33.     int unos=0;
  34.    
  35.     if ((argc < 2) || (argc > 2))
  36.     {
  37.         do
  38.         {
  39.             cout << "Unesite dimenziju sahovske ploce[1-15]: " << endl;
  40.             cin >> unos;
  41.            
  42.             if ((unos < 1) || (unos > 15))
  43.                 cout << "Preporucene dimenzije su od 1 - 15!" << endl;
  44.         } while ((unos < 1) || (unos > 15));
  45.     }
  46.     else
  47.         unos = atoi(argv[1]); // Preko argumenta
  48.    
  49.     cout << "Dimenzija sahovske ploce je: " << unos << "x" << unos << endl;
  50.    
  51.     int *tabla = new int[unos]; // Dinamicka alokacija niza
  52.     postaviQ(tabla, unos);
  53.    
  54.     cout << "Ukupan broj mogucih rijesenja za datu dimenziju je: " << brR << endl;
  55.    
  56.     delete[] tabla; // mem leak
  57.     brR = 0;
  58.    
  59.     system("pause");
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement