Advertisement
Guest User

Untitled

a guest
Mar 6th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Max гр.5304
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. #include <iostream>
  8. using namespace std;
  9.  
  10.  
  11.  
  12. int const size_arr = 8;
  13. int num_fig=0;
  14. int field[size_arr][size_arr];
  15. int num_result=0;
  16. int num_fig_on_field=0;
  17. int zep=0;
  18.  
  19.  
  20. void print()
  21. {
  22.    /* ofstream out("data.txt");
  23.     if(!out)
  24.     {
  25.         cout<<"File wasn't opened\n";
  26.         return 1;
  27.     }*/
  28.  
  29.     for(int i=0; i<size_arr;i++)
  30.     {
  31.         for(int j=0; j<size_arr; j++ )
  32.         {
  33.             cout<<field[i][j]<<" ";
  34.         }
  35.         cout << "\n";
  36.     }
  37.     cout <<"\n";
  38.     return;
  39. }
  40.  
  41. bool check_location(int x, int y)// х - строка, y - столбец
  42. {
  43.     for(int i = 1; i<=x && y-i>=0; i++)
  44.     {
  45.         if(field[x-i][y-i])
  46.         {
  47.  
  48.             return false;
  49.         }
  50.     }
  51.     for(int i=1;x-i>=0 && y+i<=size_arr-1; i++)
  52.     {
  53.         if(field[x-i][y+i])
  54.         {
  55.  
  56.             return false;
  57.         }
  58.     }
  59.     for(int i=1; x+i<=size_arr-1 && y-i>=0; i++ )
  60.     {
  61.         if(field[x+i][y-i])
  62.         {
  63.  
  64.             return false;
  65.         }
  66.     }
  67.     for(int i=1; x+i<=size_arr-1 && y+i<=size_arr-1; i++ )
  68.     {
  69.         if(field[x+i][y+i])
  70.         {
  71.  
  72.             return false;
  73.         }
  74.     }
  75.     return true;
  76. }
  77.  
  78.  
  79. void put_fig(int a, int b)//а - cтрока, b - столбец
  80. {
  81.     if(check_location(a,b))
  82.     {
  83.         field[a][b]=1;
  84.         num_fig_on_field++;
  85.         if(num_fig_on_field==num_fig)
  86.         {
  87.            // print();
  88.             field[a][b]=0;
  89.             num_fig_on_field--;
  90.             num_result++;
  91.         }
  92.       if((field[size_arr-1][size_arr-1]==1) && (num_fig_on_field != num_fig))
  93.       {
  94.           field[size_arr-1][size_arr-1]=0;
  95.           num_fig_on_field--;
  96.       }
  97.  
  98.      }
  99.     if(a!=size_arr-1 )
  100.     {
  101.         mark1:
  102.         put_fig(a+1,b);//ставим по столбцу
  103.  
  104.          if(field[a][b]==1)
  105.         {
  106.             field[a][b]=0;
  107.             num_fig_on_field--;
  108.             goto mark1;
  109.         }
  110.         return;
  111.  
  112.     }
  113.  
  114.     if(a==size_arr-1 && b!=size_arr-1)
  115.     {
  116.         mark2:
  117.         put_fig(0,b+1);//переходим на новый столбец
  118.  
  119.         if(field[a][b]==1)
  120.         {
  121.             field[a][b]=0;
  122.             num_fig_on_field--;
  123.             goto mark2;
  124.         }
  125.         return;
  126.  
  127.     }
  128.     if(a==size_arr-1 && b==size_arr-1)
  129.     {
  130.         return;
  131.     }
  132.  
  133. }
  134.  
  135. int main(int argc, char *argv[])
  136. {
  137.     cout<<"Enter num figures: ";
  138.     cin>>num_fig;
  139.  
  140.     for(int i=0; i<size_arr;i++)
  141.     {
  142.         for(int j=0; j<size_arr; j++ )
  143.         {
  144.             field[i][j]=0;
  145.         }
  146.  
  147.     }
  148.  
  149.         put_fig(0,0);
  150.  
  151.  
  152. cout<<num_result;
  153.     return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement