当前位置: 首页 > news >正文

第十五届蓝桥杯:dfs之数字接龙

#include <iostream>
using namespace std;
const int N = 300;
int a[N][N];//存值
int b[N][N];//判断某个点是否出现过 
int n,k;
string path;
int dx[] = {-1,-1,0,1,1,1,0,-1};
int dy[] = {0,1,1,1,0,-1,-1,-1};
bool dfs(int x,int y,int cur,int pos)
{
	if(pos == n*n && x == n-1 && y== n-1)
	{
		cout << path << endl;
		return true;
	}
	for(int i = 0;i<=7;i++)
	{
		int bx = x+dx[i];
		int by = y+dy[i];
		if(b[bx][by]) continue;
		if(bx<0 || bx>n-1 || by<0 || by>n-1)
		continue;
		if(((cur == k-1) && (a[bx][by] != 0)) || (cur < k-1 && a[bx][by] != cur+1)) continue;
		if(i==1&&b[bx][by-1]&&b[bx+1][by]) continue;
		else if(i==3&&b[bx-1][by]&&b[bx][by-1]) continue;
		else if(i==5&&b[bx-1][by]&&b[bx][by+1]) continue;
		else if(i==7&&b[bx+1][by]&&b[bx][by+1]) continue;

		b[bx][by] = 1;
		path+=to_string(i);
		if(dfs(bx,by,a[bx][by],pos+1))return true;
		b[bx][by] = 0;
		path.pop_back();
	}
	return false;

}
int main()
{
	cin >> n >> k;
	for(int i = 0;i<n;i++)
	{
		for(int j = 0;j<n;j++)
		{
			cin >> a[i][j];
		 } 
	}
	b[0][0] = 1;
	if(!dfs(0,0,a[0][0],1))
     cout << -1 << endl;	
	return 0;
}

相关文章:

  • 深入解析雪花算法(Snowflake):分布式唯一ID的优雅解决方案
  • 1、CI/CD 平台安装部署(Gitlab+Jenkins)
  • 10个常见的Java面试问题及其答案
  • 嵌入式学习前要了解的基础知识
  • PPP协议
  • nextjs+material UI实现换肤功能
  • 数据集/API 笔记:湿球黑球温度(WBGT)观测数据
  • Linux cat 命令
  • JavaWeb-idea配置smart tomcat
  • Java设计模式 —— 【行为型模式】迭代器模式(Iterator Pattern)详解
  • 我的ChatGPT怎么登不上?
  • CentOS7安装 FFmpeg
  • Self-Pro: A Self-Prompt and Tuning Framework for Graph Neural Networks
  • Spring Boot 监听器(Listeners)详细教程
  • 2024华为OD机试真题-热点网站统计(C++)-E卷-100分
  • AVM 环视拼接 鱼眼相机
  • 离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用
  • 动态表头报表的绘制与导出
  • 内网穿透的应用-企业级远程办公方案:NAS部署网页版Linux,HTTPS加密访问全配置
  • Ubuntu 创建新用户及设置权限
  • 巴称巴控克什米尔地区11人在印方夜间炮击中身亡
  • 国家出口管制工作协调机制办公室部署开展打击战略矿产走私出口专项行动
  • 新华每日电讯:给“男性妇科病论文”开一剂复方药
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 前瞻|美联储明晨“按兵不动”几无悬念:关税战阴霾下,会否释放降息信号
  • 李云泽:小微企业融资协调工作机制已发放贷款12.6万亿元