nyoj 306 搜索+二分
来源:互联网 发布:java工程师的职业规划 编辑:程序博客网 时间:2024/05/01 06:02
#include#includeint st[105][105];int vi[105][105];int ans;int max,min;int n,fla;int fx[]={0,0,1,-1};int fy[]={1,-1,0,0};void dfs(int x,int y,int ma,int min){// printf("%d %dxyxy\n",x,y);if(fla)return;if(x==n-1&&y==n-1){fla=1;// printf("%d %dff\n",ma,min);return;}for(int i=0;i<4;i++){// printf("%d %d fx\n",fx[i],fy[i]);int xx=x+fx[i];int yy=y+fy[i];// printf("%d %d xxyy\n",xx,yy);if(st[xx][yy]>=min&&st[xx][yy]<=ma&&!vi[xx][yy]&&xx>=0&&yy>=0){vi[xx][yy]=1;dfs(xx,yy,ma,min);//vi[xx][yy]=0; 此处}}}int find(int mm){for(int i=min;i<=max-mm;i++){if(st[0][0]<i||st[0][0]>i+mm)continue;if(st[n-1][n-1]<i||st[n-1][n-1]>i+mm)continue;fla=0;memset(vi,0,sizeof(vi));vi[0][0]=1;dfs(0,0,i+mm,i);if(fla)return 1;}return 0;}int main(){while(~scanf("%d",&n)){memset(st,-1,sizeof(st));for(int i=0;i<n;i++)for(int j=0;j<n;j++){int a;scanf("%d",&a);if(a>max)max=a;if(a<min)min=a;st[i][j]=a;}int jw=max-min;int ks=0,mid;while(jw>ks){// printf("%dmid\n",mid);mid=(jw+ks)/2;int fl=find(mid);if(fl)jw=mid;elseks=mid+1;}printf("%d\n",jw);}}
0 0
- nyoj 306 搜索+二分
- NYOJ 306 走迷宫 【二分+搜索】
- nyoj 疯牛(二分搜索+贪心)
- NYOJ 5177 疯牛(最大化最小值 二分搜索)
- NYOJ 586 疯牛 (二分搜索答案)
- nyoj 306 二分+dfs
- NYOJ 914 Yougth的最大化(二分搜索 + 贪心)
- NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)
- NYOJ 680 摘枇杷(二分搜索+贪心)
- nyoj 914 Yougth的最大化(贪心+二分搜索)
- nyoj Yougth的最大化 914 (二分搜索)
- NYOJ 疯牛问题(二分搜索+贪心)
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- wireshark解析流媒体中的AMR/H263/H264包的方法
- Linux下使用rsync最快速删除海量文件的方法
- 爱的一种解释
- Matlab信号处理工具箱函数
- C#调用WebService实现天气预报
- nyoj 306 搜索+二分
- jax-ws使用实例
- boost递归遍历文件夹
- .Net/C# 与 J2EE/Java Web Service 互操作完整实例
- Hadoop MapReduce: to Sort or Not to Sort
- Wifi共享精灵台式机能用吗?
- 大数函数
- 如何让DIV固定在页面的某个位置而不随着滚动条随意滚动 (转)
- 书趣网用户模型