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

ZOJ 2110 Tempter of the Bone DFS搜索+奇偶剪枝

二维网格中的两个点a,b。设其最短距离为d(网格只能走横竖线,不能走斜线),那么实际从a到b的路程可能比d大或者相等,但与d的差一定是偶数,这就是我理解的奇偶剪枝的原理

#include<stdio.h> #include<queue> #include<string.h> #include<stdlib.h> #include<math.h> using namespace std; int m,n,t; char map[10][10]; bool visit[10][10]; int sx,sy,ex,ey; int h[4]={1,-1,0,0}; int g[4]={0,0,1,-1}; int dfs(int xx,int yy,int time){ int i; if(xx==ex && yy==ey && time==t) return 1; for(i=0;i<4;i++){ int x=xx+h[i]; int y=yy+g[i]; if(x>=m || x<0 || y>=n ||y<0) continue; if(map[x][y]=='X') continue; int temp=(t-(time+1))-(int)(abs(x-ex)+abs(y-ey)); if(temp<0 || temp%2==1) continue; map[x][y]='X'; if(dfs(x,y,time+1)) return 1; map[x][y]='.'; } return 0; } int main(){ int i,j,k; while(scanf("%d %d %d",&m,&n,&t) && !(m==0 && n==0 && t==0)){ int sum=0; for(i=0;i<m;i++){ scanf("%s",map[i]); } for(i=0;i<m;i++) for(j=0;j<n;j++){ if(map[i][j]=='S'){ sx=i; sy=j; } if(map[i][j]=='D'){ ex=i; ey=j; } if(map[i][j]=='.') sum++; } if(sum+1<t){ printf("NO\n"); continue; } map[sx][sy]='X'; if(dfs(sx,sy,0)) printf("YES\n"); else printf("NO\n"); } }


相关文章:

  • mysql myisam存储引擎关于锁的3个参数
  • 【Android】ListView中getView的原理与解决多轮重复调用的方法
  • oracle利用触发器实现主键字段自增
  • 函数的重写
  • wx入门(一)
  • ZOJ 1649 Rescue BFS水题
  • Linux 性能分析的前 60 秒
  • C++继承体系下类中属性的能见度总结
  • 案例45-crm练习改写客户列表使用struts2OGNL
  • ZOJ 2913 Bus Pass BFS水题
  • 内置函数——format
  • POJ 1465 Multiple BFS
  • Jenkins之Linux和window配置区别
  • POJ Holedox Moving BFS hash判重
  • mysql5.7的安装
  • 10个最佳ES6特性 ES7与ES8的特性
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Github访问慢解决办法
  • gops —— Go 程序诊断分析工具
  • Hexo+码云+git快速搭建免费的静态Blog
  • mac修复ab及siege安装
  • Python语法速览与机器学习开发环境搭建
  • ViewService——一种保证客户端与服务端同步的方法
  • v-if和v-for连用出现的问题
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue脚手架vue-cli
  • 判断客户端类型,Android,iOS,PC
  • 阿里云服务器如何修改远程端口?
  • ​插件化DPI在商用WIFI中的价值
  • #git 撤消对文件的更改
  • #每天一道面试题# 什么是MySQL的回表查询
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C++17) optional的使用
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (k8s中)docker netty OOM问题记录
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (定时器/计数器)中断系统(详解与使用)
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (九)信息融合方式简介
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)基于IDEA的JAVA基础10
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)母版页和相对路径
  • .htaccess 强制https 单独排除某个目录
  • .htaccess配置重写url引擎
  • .java 9 找不到符号_java找不到符号
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .Net Core 中间件验签
  • .NET 表达式计算:Expression Evaluator
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?