выведение временной сложности задачи nqueens - PullRequest
0 голосов
/ 13 января 2020

Может ли кто-нибудь доказать / получить временную сложность моего подхода к решению nqueens?
Я прохожу каждую позицию на сетке и, если есть возможность разместить там ферзя, тогда я сначала вычисляю решение по ставлю королеву, а затем расставляю королеву, иначе я продолжаю.

Код:

bool notinrow(int row,int col,vector<string> tra)
  {
      for(int i=0;i<tra.size();i++)
      {
          if(tra[row][i]=='Q' & i!=col)
              return false;
      }
      return true;
  }  
bool notincol(int row,int col,vector<string> tra)
  {
   for(int j=0;j<tra.size();j++)   
   {
       if(tra[j][col]=='Q' & j!=row)
         return false;
   }
    return true;  
  }
 bool notindiag1(int r,int c, vector<string> tra)
  {
      int i=r-1;
      int j=c-1;
      while(i>=0 & j>=0)
      {
          if(tra[i][j]=='Q')
              return false;
          i--;j--;
      }   
      return true;
  } 
bool notindiag2(int r, int c,vector<string> tra)
  {  int i=r-1;
      int j=c+1;
      while(i>=0 & j<totqueens)
      {
          if(tra[i][j]=='Q')
              return false;
          i--;j++;
      }   
      return true;
  }    
  void nqueens(int number,vector<string> tra,int currqueens)
    {
      if(currqueens==totqueens)
      { 
       bhej.push_back(tra);
       return ;
      } 
      if(number==totiter)
          return;  
      int x=number/totqueens;
      int y=number%totqueens;
      if(ispossible(x,y,tra))
      {       
        tra[x][y]='Q';
        nqueens(number+1,tra,currqueens+1);
        tra[x][y]='.';
        nqueens(number+1,tra,currqueens) ; 
      }
      else
        nqueens(number+1,tra,currqueens); 
   }```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...