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

数字接龙(dfs)(蓝桥杯)

非常好的联系dfs的一道题目!
推荐看这位大佬的详解——>大佬详细题解

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;const int N = 2e5 + 10,M=20;
int a[M][M];
bool val[M][M];
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
int n,k;
int path[M][M];
string ans;      //这时的数字  //答案字符  //总共经过数目
void dfs(int x,int y,int url,string s,int num)
{if(x==n-1&&y==n-1&&num==n*n){if(ans.empty())ans=s;return;}//为最后一次递归设置终止条件,找到答案终止递归(项目结题)for(int i=0;i<8;i++){int nx=x+dx[i],ny=y+dy[i];//针对下一次递归设置条件(主观认为已经到下一次)(写申请书)if(nx>n-1||ny>n-1||nx<0||ny<0)continue;if(val[nx][ny]==true)continue;if(i==1&&(path[nx][ny-1]==3||path[nx+1][ny]==7))continue;if(i==3&&(path[nx-1][ny]==5||path[nx][ny-1]==1))continue;if(i==5&&(path[nx-1][ny]==3||path[nx][ny+1]==7))continue;if(i==7&&(path[nx+1][ny]==1||path[nx][ny+1]==5))continue;if(url<k-1&&a[nx][ny]==url+1||url==k-1&&a[nx][ny]==0){path[x][y]=i;//下一次行动的方向val[nx][ny]=true;dfs(nx,ny,a[nx][ny],s+to_string(i),num+1);//把参数带到下一次(申请生效)if(!ans.empty())return;//这里需要结束所有的void调用,已经第一次找到了,不再回溯(终止回溯/申请)path[x][y]=-1;//回溯(相当于撤回原来的申请,预备下一次申请)val[nx][ny]=false;//回溯}}	
}
int main()
{cin>>n>>k;for(int i=0;i<n;i++)for(int j=0;j<n;j++){cin>>a[i][j];path[i][j]=-1;}string star;val[0][0]=true;dfs(0,0,0,star,1);if(!ans.empty())cout<<ans<<endl;else cout<<-1<<endl;return 0;
}

http://www.dtcms.com/a/355647.html

相关文章:

  • npm install 安装离线包的方法
  • 【论文阅读】健全个体无辅助运动期间可穿戴传感器双侧下肢神经机械信号的基准数据集
  • 如何打造品牌信任护城河?
  • Spark入门:从零到能跑的实战教程
  • 腾讯云重保流程详解:从预案到复盘的全周期安全防护
  • ♻️旧衣回收小程序|线上模式新升级
  • 网页爬虫的实现
  • 苹果ImageIO零日漏洞分析:攻击背景与iOS零点击漏洞历史对比
  • 2025 深度洞察!晶圆背面保护膜市场全景调研与投资机遇解析
  • 推荐一款JTools插件Crypto
  • 基于Spring Session + Redis + JWT的单点登录实现
  • Redis使用简明教程
  • SQL 查询优化全指南:从语句到架构的系统性优化策略
  • 初识分布式事务
  • week5-[一维数组]归并
  • 数据结构与算法-算法-42. 接雨水
  • AI 如何 “看见” 世界?计算机视觉(CV)的核心技术:图像识别、目标检测与语义分割
  • Scrapy 框架实战:构建高效的快看漫画分布式爬虫
  • 试验铁地板在现代工业中的应用与特性
  • AI医疗影像诊断新突破:从肺部CT结节识别到眼底病变筛查,提升疾病早诊效率
  • MTK Linux DRM分析(十四)- Mediatek KMS实现mtk_drm_drv.c(Part.2)
  • 工业机器人如何通过Modbus TCP转CanOpen网关高效通信!
  • 机器学习基本介绍
  • 【练习九】Java实现加油站支付小程序:存款与消费
  • 健永科技RFID技术在高压电厂机器狗巡检中的应用
  • Access token(访问令牌:以JWT格式无状态存储)和Refresh token(刷新令牌:有状态存储于Redis/DB)区别与联系、Redis黑名单
  • C#-mqtt通讯,服务端和客户端,以及esp32-mqtt
  • 第二十节:3D文本渲染 - 字体几何体生成与特效
  • 神经网络 | 基于matlab的LSTM详解
  • 3D高斯溅射实现医疗影像内部场景渲染