zoukankan      html  css  js  c++  java
  • 8皇后问题

    typedef struct Spoint
    {
    	int x;
    	int y;
    	Spoint()
    	{
    		x = -1;
    		y = -1;
    	}
    };
    
    static Spoint point[8];
    
    
    int Queen8(int n, int cur)
    {
    
    	static  int iCount = 0;
    	if(cur == n)
    	{   
    		iCount++;
    
    		for(int i = 0; i < n; i++)
    		{
    			printf("(%d,%d) ", point[i].x, point[i].y);
    
    		}
    
    		printf("
    ");
    	}
    	else
    	{
    		for(int i = 0; i < n; i++)
    		{
    			bool bNextRow = false;
    			for(int j = 0; j < n; j++)
    			{
    					int bShow = false;	
    
    					for(int k = 0; k < cur; k++)
    					{
    						if(i == point[k].x )
    						{
    							bNextRow = true;
    							break;
    						}	
    												
    						if(j == point[k].y ||
    							(i < point[k].x)||  
    							(i == point[k].x - 1 && j == point[k].y - 1)||(i == point[k].x - 1 && j == point[k].y + 1)|| 
    							(i == point[k].x + 1 && j == point[k].y - 1)||(i == point[k].x + 1 && j == point[k].y + 1))
    						{
    							bShow = true;
    							break;
    						}
    						
    						
    					}
    
    					if(bNextRow)
    					{
    						bNextRow = false;
    						break;
    					}
    
    					if(!bShow)
    					{
    						bShow = false;
    						point[cur].x = i;
    						point[cur].y = j;
    						Queen8(n, cur + 1);
    					}
    			
    			}
    
    		}
    	}
    	return iCount;
    }
    
    int WQueen8()
    {
    	int cur = 0;
    	int n = 8;
    	
    	int *B = (int *)malloc(n * n * sizeof(int));
    	memset(B, 0, n * n * sizeof(int));	 
    
    	int num = Queen8(n, cur);
    	delete [] B;
    	return num;
    }
    

      

  • 相关阅读:
    C语言第九节 函数指针
    C语言第七节 指针
    C语言第五节 函数
    C语言第六节 结构体
    C语言第四节 数组
    C语言第三节 循环结构
    C语言第二节 分支结构
    ARC、MRC混编
    Git 和 SVN之间的五个基本区别
    KZ--NSString、NSMutableString
  • 原文地址:https://www.cnblogs.com/welen/p/3941129.html
Copyright © 2011-2022 走看看