zoukankan      html  css  js  c++  java
  • 八皇后非递归(仅使用一个数组且可扩展为N皇后问题)

    </pre><pre name="code" class="cpp">/*
      Theme:八皇后(非递归)
      Coder:秒针的声音
      Time:2015.1.13 
     */
     #include <iostream>
     using namespace std;
     #include <stdlib.h>
     #include <math.h>
     int No=0;
     void Prin(int *q,int n)
     {  
       cout<<"No."<<++No<<endl;
     	for(int i=0;i<n;i++){
     		for(int j=0;j<n;j++){
     			if(q[i]!=j)
     			cout<<'X'<<" ";
     			else
     			cout<<'Q'<<" ";
     		}
     		cout<<endl;
     	}
     	cout<<endl;
     }
     int IsStay(int *q,int cnt,int step)
     {
     	for(int i=0;i<cnt;i++){
     		if(q[i]==step||abs(cnt-i)==abs(step-q[i])){
     			return 0;
     		}
     	}
     	return 1;
     }
     void Queen(int n)
     {
     	int cnt=0;
     	int *Q=(int *)malloc(n*sizeof(int));//个数为行数储存列信息 
        for(int Col=0;1;Col++){
        	if(IsStay(Q,cnt,Col)){
    			Q[cnt++]=Col;
    			if(cnt==n) Prin(Q,n);
    			Col=-1;
        	}else if(Col==n-1){
      			Col=Q[--cnt];
    			while(1){
    				if(Col!=n-1){
    					break;
    				}else{
    					Col=Q[--cnt];
    					if(cnt==-1) return;		
    				}
    			}	
        	} 
        }
     }
     int main(void)
     {
     	int n=8;//八皇后 
     	Queen(n);
     	return 0;
     }
    


  • 相关阅读:
    父页面与子页面间相互传值
    PS常用技能综合
    JS 提交form表单
    html实体字符
    js基础
    Delegate模式
    IOS-基础知识
    测试工具综合
    [Linux] Nginx 提供静态内容和优化积压队列
    [Linux] Nginx响应压缩gzip
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457659.html
Copyright © 2011-2022 走看看