zoukankan      html  css  js  c++  java
  • 【搜索】N皇后问题

    原题传送门

    思路


    很经典的搜索题,但本蒟蒻卡了1个多小时,搜索部分很简单,但是判重的部分是真的蛋疼,我写了一个高效率的判重算法,但是无论检查多少遍都没有问题的算法却总是WA......后来我干脆写了一个超简单但是慢的算法......然后,过了???这数据水的过分了啊......早知如此我还费劲推高端算法干啥子嘞......

    Code


    /*int r(int h,int l)
    {
    	int i;
    	for(i=1;i<h;i++)
    	{
    		if(a[i][l]==1||a[i][h+l-i]==1||i-h+l>0&&a[i][i-h+l]==1)
    			return 0;
    	}
    	return 1;
    }*/
    
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<vector>
    #include<algorithm>
    #include<cstdlib>
    #include<cmath>
    #include<stack>
    #include<map>
    using namespace std;
    
    int n,a[15][15],ans;
    
    int r(int h,int l)
    {
    	for(int i=1; i<h; i++)
            if(a[i][l] == 1)
                return false;
        for(int i=h-1,j=l-1; i>0&&j>0; i--,j--)
            if(a[i][j] == 1)
                return false;
        for(int i=h-1,j=l+1; i>0&&j<=n; i--,j++)
            if(a[i][j] == 1)
                return false;
        return true;
    }
    
    void dfs(int h)
    {
    	if(h==n+1)
    	{
    		ans++;
    		return;
    	}	
    	int l;
    	for(l=1;l<=n;l++)
    	{
    		a[h][l]=1;
    		if(r(h,l))
    			dfs(h+1);
    		a[h][l]=0;
    	}
    }
    
    int main()
    {
        cin>>n;
    	dfs(1);
    	cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    类加载
    LinkedList插入排序实现
    99乘法表
    关于IO流的抽象类
    分解质因数
    Struts2小demo遇到的几个问题
    Tomcat设置欢迎页问题
    数据库迁移
    EF – 1.模式
    正则表达式
  • 原文地址:https://www.cnblogs.com/gongdakai/p/11482513.html
Copyright © 2011-2022 走看看