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

nyoj 306 二分+dfs

#include<stdio.h>
#include<string.h>
#define N 200
int Min(int a,int b) {
return a>b?b:a;
}
int Max(int a,int b) {
return a>b?a:b;
}
int map[N][N],flag,visit[N][N],n,min,max;
int dis[4][2]={1,0,-1,0,0,1,0,-1};
void init() {
int i,j;
min=1000;
max=-1000;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) {
scanf("%d",&map[i][j]);
min=Min(min,map[i][j]);
max=Max(max,map[i][j]);
}
}
void dfs(int x,int y,int min,int max){
 if(flag)return ;
 if(x==n&&y==n){flag=1;return ;}
 int i;
 for(i=0;i<4;i++) {
  int xx=x+dis[i][0];
  int yy=y+dis[i][1];
  if(map[xx][yy]>=min&&map[xx][yy]<=max&&visit[xx][yy]==0&&xx>=1&&xx<=n&&yy>=1&&yy<=n) {
  visit[xx][yy]=1;
  dfs(xx,yy,min,max);
  }
 }
}
int find_answer(int k) {
int i;
for(i=min;i<=max-k;i++) {
if(map[1][1]<i||map[1][1]>i+k)continue;
if(map[n][n]<i||map[n][n]>i+k)continue;
memset(visit,0,sizeof(visit));
  visit[1][1]=1;
  flag=0;
  dfs(1,1,i,i+k);
  if(flag==1)return 1;
}
return 0;
}
int slove(){
   int mid,x=0,y=max-min;
   while(x<y) {
   mid=(x+y)/2;
   if(find_answer(mid))
           y=mid;
   else
 x=mid+1;
   }
   return y;
}
int main() {
while(scanf("%d",&n)!=EOF) {
init();
printf("%d\n",slove());
}
return 0;
}

转载于:https://www.cnblogs.com/thefirstfeeling/p/4410813.html

相关文章:

  • C#的变迁史 - C# 5.0 之并行编程总结篇
  • [翻译] TLMotionEffect 重力感应
  • d3.js读书笔记-1
  • 修改注册表来修改IE的设置---资料汇总
  • 最小二乘法(ZZ)
  • 系统初始化流程 跟着启动代码走
  • system(“pause”)和getchar()
  • AnyMap基于地图的统计图表下载使用指南
  • C# 图片截图(圆形)
  • 安装Java EE失败,解决方案
  • Unix/Linux中/usr目录的由来
  • asp.net C#绘制太极图
  • [翻译] NimbusKit
  • MySQL的一些语法总结
  • 关于python的可变和不可变对象
  • angular组件开发
  • Docker: 容器互访的三种方式
  • echarts花样作死的坑
  • ES6 ...操作符
  • java2019面试题北京
  • Material Design
  • Vue 2.3、2.4 知识点小结
  • VUE es6技巧写法(持续更新中~~~)
  • vue-cli3搭建项目
  • Vue小说阅读器(仿追书神器)
  • 阿里云应用高可用服务公测发布
  • 飞驰在Mesos的涡轮引擎上
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 区块链将重新定义世界
  • 少走弯路,给Java 1~5 年程序员的建议
  • 一个完整Java Web项目背后的密码
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 第二十章:异步和文件I/O.(二十三)
  • # centos7下FFmpeg环境部署记录
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (5)STL算法之复制
  • (rabbitmq的高级特性)消息可靠性
  • (二)构建dubbo分布式平台-平台功能导图
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (分类)KNN算法- 参数调优
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (一)kafka实战——kafka源码编译启动
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转) ns2/nam与nam实现相关的文件
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • ??myeclipse+tomcat
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析