zoukankan      html  css  js  c++  java
  • poj1088滑雪搜索dfs

    #include<iostream>
    using namespace std;

    #define MAXN 20000

    int map[105][105];
    int f[105][105];
    int x[]={0,0,1,-1};
    int y[]={1,-1,0,0};

    void dfs(int i,int j)
    {
     for(int k=0;k<4;k++)
     {
      if(map[i+x[k]][j+y[k]]>map[i][j] && f[i][j]+1>f[i+x[k]][j+y[k]])
      {
       f[i+x[k]][j+y[k]]=f[i][j]+1;   //f代表等级
        dfs(i+x[k],j+y[k]);
      }
       
     }
    }

    int main()
    {
     int r,c,s;
     while(cin>>r>>c)
     {
      for(int i=1;i<=r;i++)                   //输入数据    f为1
       for(int j=1;j<=c;j++)
        cin>>map[i][j],f[i][j]=1;
      for(int i=0;i<=r+1;i++)                     //行数+2次循环
       map[0][i]=map[r+1][i]=map[i][0]=map[i][c+1]=MAXN;      //将边界换成最大
      for(int i=1;i<=r;i++)                           //逐个点递归
       for(int j=1;j<=c;j++)
        dfs(i,j);
      s=0;
      for(int i=1;i<=r;i++)
       for(int j=1;j<=c;j++)
        if(f[i][j]>s)
         s=f[i][j];
      cout<<s<<endl;
     }
     return 0;
    }

  • 相关阅读:
    面向对象 & sql语句
    MySQL--数据库面试题汇集
    MySQL优化
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    《大道至简》读后感
    JAVA日报
  • 原文地址:https://www.cnblogs.com/amourjun/p/5134199.html
Copyright © 2011-2022 走看看