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

基础算法bfs -剪枝问题

问题描述:一个迷宫有 NXM 格,有一些格子是地板,能走;有一些格子是障碍,不能走。给一个起点S和一个终点D。一只小狗从 S出发,每步走一块地板,在每块地员不能停留,而且走过的地板都不能再走。给定一个 T,问小狗能正好走 T步到达D吗?输入:有很多测试样例。每个测试中,第1行输入整数 N,M,T(1<N,M<7,0<T<50)。后面N 行中,每行输入M 个字符,有这些字符可以输入:'X':墙;S':起点;D:终点;",:地板。最后一行输入'000',表示输入结束。


输出:每个测试,如果狗能到达,输出YES,否则输出 NO。

#include <iostream>
using namespace std;
char mat[8][8], visit[8][8];
int n, m, t;
int flag;
int a, b, c, d;
int dir[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };
#define check(xx,yy)(xx>=0&&yy>=0&&xx<n&&yy<n)
void dfs(int time,int x,int y)
{if (flag)return;if (mat[x][y] =='D'){if(time==t)flag = 1;return;}int tem = t - time - (abs(c - x) + abs(d - y));if (tem < 0) return;for (int i = 0; i < 4; i++){int xx = x + dir[i][0];int yy = y + dir[i][1];if (check(xx, yy) && mat[xx][yy] != 'X' && !visit[xx][yy]){visit[xx][yy] = 1;dfs(time + 1, xx, yy);visit[xx][yy] = 0;}}return;
}void solve()
{cin >> n >> m >> t;	for (int i = 0; i < n; i++){int ts = 0;for (int j = 0; j < m; j++){cin >> mat[i][j];if (mat[i][j] == '0')ts++;if ('S'== mat[i][j]){a = i;b = j;}if ('D' == mat[i][j]){c = i;d = j;}}if (ts==3) break;}memset(visit, 0, sizeof(visit));int tem = t - abs(c - a) - abs(d - b);if (tem &1) { cout << "N0"; return; }flag = 0;visit[a][b] = 1;dfs(0, a, b);if (flag){cout << "YES" << endl;}else{cout << "NO" << endl;}
}
signed main()
{ios::sync_with_stdio;cin.tie(0);cout.tie(0);int num = 1;while (num--){solve();}
}

http://www.lryc.cn/news/293708.html

相关文章:

  • 在Meteor Lake上测试基于Stable Diffusion的AI应用
  • 情人节心动礼物:共度情人节美好时刻的礼物推荐
  • 远程手机搭建Termux环境,并通过ssh连接Termux
  • 基于EdgeWorkers的边缘应用如何进行单元测试?
  • 【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?
  • 【CSS系列】常用容易忽略的css
  • Java 数据结构 二叉树(二)红黑树
  • React18-完成弹窗封装
  • 蓝桥杯2024/1/31-----底层测试模板
  • 蓝桥杯备战(AcWing算法基础课)-高精度-乘-低精度
  • C++设计模式-里氏替换原则
  • compose LazyColumn + items没有自动刷新问题
  • Java八大常用排序算法
  • 编程笔记 html5cssjs 075 Javascript 常量和变量
  • 题目 1159: 偶数求和
  • 呼吸灯--FPGA
  • MySQL数据库①_MySQL入门(概念+使用)
  • 虚幻UE 特效-Niagara特效实战-魔法阵
  • Qt多语言翻译
  • Latex学习记录
  • 你在做绩效考核,还是绩效管理?二者有什么区别
  • ele-h5项目使用vue3+vite+vant4开发:第四节、业务组件-SearchView组件开发
  • C系列-柔性数组
  • 【Linux网络编程一】网络基础1(网络框架)
  • springboot156基于SpringBoot+Vue的常规应急物资管理系统
  • 学习MySQL的MyISAM存储引擎
  • nginx 的 ngx_http_upstream_dynamic_module 动态域名解析功能的使用和源码详解
  • 前端vue/react项目压缩图片工具@yireen/squoosh-browser
  • 悬而未决:daterangepicker设置默认选择日期时间后点确认无值的BUG
  • composer常用命令