深度优先搜索DFS3(c++)

题目

八皇后问题

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
int a[10][10];
int cnt;

void dfs(int,int);
void print();
bool panduan(int,int);

int main()
{
	
	n = 8;
	for(int i = 1;i<=n;i++)
	{
		a[1][i] = 1;
		dfs(1,i);
		a[1][i] = 0;
	}
	
	
	return 0;
}
void dfs(int x,int y)
{
	if(x==8)
	{
		print();
		return;
	}
	int tx = x+1;
	int ty = 1;
	for(ty = 1;ty<=n;ty++)
	{
		if(panduan(tx,ty)==true)
		{
			a[tx][ty] = 1;
			dfs(tx,ty);
			a[tx][ty] = 0;
		}
	}
	return;
}
void print()
{
	cnt++;
	cout<<"No."<<cnt<<endl;
	for(int i = 1;i<=n;i++)
	{
		for(int j = 1;j<=n;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
}
bool panduan(int x,int y)
{
	for(int i = 1;i<=n;i++)
	{
		if(a[i][y]==1&&i!=x) return false;
	}
	int i = x-1,j = y-1;
	while(i>=1&&j>=1)
	{
		if(a[i][j]==1) return false;
		i--;
		j--;
	}
	i = x+1,j = y+1;
	while(i<=n&&j<=n)
	{
		if(a[i][j]==1) return false;
		i++;
		j++;
	}
	i = x+1,j = y-1;
	while(i<=n&&j>=1)
	{
		if(a[i][j]==1) return false;
		i++;
		j--;
	}
	i = x-1,j = y+1;
	while(i>=1&&j<=n)
	{
		if(a[i][j]==1) return false;
		i--;
		j++;
	}
	
	return true;
}

棋盘问题

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
struct node
{
	int x,y;
	node(){};
	node(int aaaaa,int bbbbb)
	{
		x = aaaaa;
		y = bbbbb;
	}
};

int n,k;
char a[10][10];
node b[1010];
int lb;
int cnt;


void dfs(int,int);
bool xuan(int,int);

int main()
{
	
	cin>>n>>k;
	while(n!=-1&&k!=-1)
	{
		for(int i = 1;i<=n;i++)
		{
			for(int j = 1;j<=n;j++)
			{
				cin>>a[i][j];
				if(a[i][j]=='#') b[++lb] = {i,j};
			}
		}
		cnt = 0;
		
		dfs(0,0);
		cout<<cnt<<endl;
		cin>>n>>k;
	}
	
	
	
	
	return 0;
}
void dfs(int v,int vb)
{
	
	if(v==k)
	{
		cnt++;
		return;
	}
	if(vb>=lb) return;
	
	vb++;
	dfs(v,vb);
	if(xuan(b[vb].x,b[vb].y)==true)
	{
		a[b[vb].x][b[vb].y] = '@';
		dfs(v+1,vb);
		a[b[vb].x][b[vb].y] = '#';
	}
	
	
	return;
}
bool xuan(int xx,int yy)
{
	
	for(int i = 1;i<=n;i++)
	{
		if(a[i][yy]=='@'||a[xx][i]=='@') return false;
	}
	
	return true;
}
相关推荐
水蓝烟雨1 小时前
3373. 连接两棵树后最大目标节点数目 II
算法·leetcode
故事和你911 小时前
洛谷-【图论2-1】树6
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章73-点-线距离
图像处理·人工智能·opencv·算法·计算机视觉
不知名的老吴1 小时前
在C++中不用宏怎么打日志的使用建议
开发语言·c++·算法
图码1 小时前
生命游戏的优雅解法:从O(mn)空间到O(1)空间的进阶之旅
数据结构·算法·游戏·矩阵·空间计算
蜡笔小马2 小时前
09.C++设计模式-外观模式
c++·设计模式·外观模式
2301_800895102 小时前
蓝桥杯第十二届b组国赛真题--备战国赛版h
算法·蓝桥杯
晚会者荣2 小时前
C++11_3:包装器,智能指针
c++
手写码匠2 小时前
手写 AI Prompt Injection 防护系统:从零实现 LLM 安全边界
人工智能·深度学习·算法·aigc