zoukankan      html  css  js  c++  java
  • DFS水题集

    A.N皇后问题

    #include<iostream>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    int vis[3][50], P[15];//三个方向 ↖↑↗在此三个方向都不能有皇后 
    int n, sum;
    
    void  DFS(int row){
    	int i;
    	if (row == n + 1){//已经够n行了
    		sum++;
    		return;
    	}
    	for (i = 1; i <= n; i++){ // i表示第i行遍历 row表示第row行
    		//	关注对角线上数的行标和列标的特征
    		if (vis[0][row - i + n] == 0 && vis[1][i] == 0 && vis[2][row + i] == 0){//回溯
    			vis[0][row - i + n] = vis[1][i] = vis[2][row + i] = 1;//变值
    			DFS(row + 1);//深搜
    			vis[0][row - i + n] = vis[1][i] = vis[2][row + i] = 0;//回溯
    		}
    	}
    }
    
    int main()
    {
    	for (n = 1; n <= 10; n++){//先打表不然会超时的
    		memset(vis, 0, sizeof(vis));
    		sum = 0;
    		DFS(1);
    		P[n] = sum;
    	}
    	while (cin >> n, n){
    		cout << P[n] << endl;
    	}
    	return 0;
    }
    
    作者:LightAc
    出处:https://www.cnblogs.com/lightac/
    联系:
    Email: dzz@stu.ouc.edu.cn
    QQ: 1171613053
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    开源框架/软件汇总
    如何查看Maven项目的jar包依赖
    我的前端技术栈(2018版)
    解决在Mac上用pyenv安装python3失败的问题
    学习jenv
    学习sbtenv
    解决MAC下修改系统文件没权限的问题
    学习Spring Boot
    学习音标
    C# 对List中的Object进行排序
  • 原文地址:https://www.cnblogs.com/lightac/p/10555911.html
Copyright © 2011-2022 走看看