text1.cpp

来自「N皇后问题的回溯算法」· C++ 代码 · 共 51 行

CPP
51
字号
#include <iostream>
using namespace std;
int x[20]; 
int COUNT = 0;

bool place(int k)
   {  int i;   
       i = 1;   
   while (i<k)  
   {     
	   if (x[i] == x[k] || (abs(x[i] - x[k]) == abs(i-k)))     
		   return false;    
	   i = i + 1;  
   }    
   return true;
   }

   void queen(int N)
   {    int k;   
   int n = N;   
   x[1] = 0;    
   k = 1;  
   while (k>0)   
   {        
	   x[k] = x[k] + 1;    
	   while (x[k] <= n && place(k) == false)    
		   x[k] = x[k] + 1;
        if (x[k] <= n)      
			if (k == n)    
			{                
				for(int i = 1; i <= n; i++)  
				{     cout<<x[i]<<" ";    }
                cout<<endl;    
	             return ;        
	             COUNT++;          
             }        
			else    
			{         
				k = k + 1;         
				x[k] = 0;            
			}      
			else          
				k = k - 1;    
   }
}
   int main()
   { int n ;
   cin>> n ;
   queen(n); 
   return 0 ;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?