栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2110 Mountain Walking

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2110 Mountain Walking

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;bool mark[105][105];int map[105][105];int n;bool dfs(int x,int y,int mmin,int len){    mark[x][y]=true;    if(x==n&&y==n)        return true;    bool flag=false;    if(x<n&&!mark[x+1][y]&&map[x+1][y]<=mmin+len&&map[x+1][y]>=mmin)        flag|=dfs(x+1,y,mmin,len);    if(x>1&&!mark[x-1][y]&&map[x-1][y]<=mmin+len&&map[x-1][y]>=mmin)        flag|=dfs(x-1,y,mmin,len);    if(y>1&&!mark[x][y-1]&&map[x][y-1]<=mmin+len&&map[x][y-1]>=mmin)        flag|=dfs(x,y-1,mmin,len);    if(y<n&&!mark[x][y+1]&&map[x][y+1]<=mmin+len&&map[x][y+1]>=mmin)        flag|=dfs(x,y+1,mmin,len);    return flag;}bool solve(int mid){    int t=map[1][1];    for(int i=max(t-mid,0);i<=t;i++)    {        memset(mark,false,sizeof(mark));        if(dfs(1,1,i,mid)) return true;    }    return false;}int main(){    while(scanf("%d",&n)!=EOF)    {        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)     scanf("%d",&map[i][j]);        int ans=0,ll,rr,mid;        for(ll=0,rr=110;ll<=rr;)        { mid=(ll+rr)>>1; if(solve(mid)) {     ans=mid;     rr=mid-1; } else {     ll=mid+1; }        }        printf("%dn",ans);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377609.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号