1213:八皇后问题

#include<bits/stdc++.h>
using namespace std;
int mp[100][100],cnt=1;//警钟敲烂  数组请开大于15 15 

bool cheak(int x,int y){//判断xy位置是否合法 
	//同一列有没有  对角线有没有 -->  y?  x+y?  x-y?    
	for(int i=1;i<x;i++)
		if(mp[i][y]==1||mp[i][x+y-i]==1||mp[i][i-x+y]==1) return false;
    for(int i=1;i<x;i++)//i+j  = x+y   j=x+y-i   mp[i][x+y-i]==1?
        if(mp[i][x+y-i]==1) return false;
    for(int i=1;i<x;i++) // i-j = x-y  j=i-x+y  mp[i][i-x+y]==1?
  		if(mp[i][i-x+y]==1) return false;
	return true;
} 

void dfs(int x){//在第x行放皇后 
	//出口
	if(x==9){//8个皇后放好了
	    cout<<"No. "<<cnt<<endl;
	    cnt++;
	    for(int i=1;i<=8;i++,puts(""))
			for(int j=1;j<=8;j++)
			    cout<<mp[j][i]<<" "; //警钟敲烂2: 输出ij是转置过的 
	    return;
	} 
	
	for(int j=1;j<=8;j++) //第x行的皇后可以放在 第1~8列
	{
		//同一列有没有  对角线有没有 -->  y?  x+y?  x-y?
		if(cheak(x,j))//判断x,j这个位置能不能放皇后 
	 	{
	 		mp[x][j]=1;//保持现场--》在x j 的位置放皇后 
			dfs(x+1);//第x行已经放好皇后,所以接着取放第x+1行 
		    mp[x][j]=0;//回溯:还原现场--》回收皇后 
		}
	} 
	
}

int main()
{
 	dfs(1);
	return 0;
}

相关推荐

  1. 1213皇后问题

    2024-07-16 17:38:01       19 阅读
  2. 1213皇后问题(c++)

    2024-07-16 17:38:01       46 阅读
  3. N/皇后问题(递归)

    2024-07-16 17:38:01       58 阅读
  4. 皇后问题——回溯+深搜

    2024-07-16 17:38:01       30 阅读
  5. C++皇后

    2024-07-16 17:38:01       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 17:38:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 17:38:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 17:38:01       57 阅读
  4. Python语言-面向对象

    2024-07-16 17:38:01       68 阅读

热门阅读

  1. py每日spider案例之影视搜索篇

    2024-07-16 17:38:01       19 阅读
  2. Linux内核 -- 用户态coredump处理之do_coredump函数

    2024-07-16 17:38:01       24 阅读
  3. 什么是MATLAB许可证协议书

    2024-07-16 17:38:01       22 阅读
  4. InnoDB 存储结构与索引页结构

    2024-07-16 17:38:01       21 阅读
  5. C++ 入门13:异常处理

    2024-07-16 17:38:01       17 阅读
  6. Nim 游戏

    2024-07-16 17:38:01       24 阅读
  7. 用Racket做一个拼图游戏——31 创建主程序

    2024-07-16 17:38:01       23 阅读
  8. Python使用蓝牙抓包

    2024-07-16 17:38:01       18 阅读
  9. ## 基础知识

    2024-07-16 17:38:01       21 阅读
  10. C# 4.0 等待线程结束

    2024-07-16 17:38:01       23 阅读
  11. leetcode hot 100 刷题记录(medium)

    2024-07-16 17:38:01       22 阅读