zoukankan      html  css  js  c++  java
  • 1088滑雪

    跟hdu的那道老鼠吃东西的很像,但是,所不同的是,这道题的起点没有预先跟你说,我一开始用了整个数组的最大值作为起始点,错了,后来发现如果这个数组中有很多相同的最大值的话,运行起来就会错,所以我干脆全部搜索,每个数值都有成为起点的机会——ACCEPT

    #include "iostream"
    #include "string.h"
    using namespace std;
    int p[4][2]={{1,0},{0,-1},{-1,0},{0,1}};
    int num[110][110],mark[110][110],maxb=0,n,m;
    int dfs(int x,int y){
      int max=0,i;
      if(mark[x][y]==1){
        for(i=0;i<4;i++){
          int xx=x+p[i][0];
          int yy=y+p[i][1];
    
          if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&num[x][y]>num[xx][yy]){
            //cout<<"xx "<<xx<<" yy "<<yy<<" num "<<num[xx][yy]<<endl;
            int ans=dfs(xx,yy);
            max=max>ans?max:ans;
          }
       }
       mark[x][y]=max+1;
      }
      //cout<<"maxb "<<maxb<<endl;
      maxb=maxb>mark[x][y]?maxb:mark[x][y];
      return mark[x][y];
    }
    int main(){
      int i,j,x,y,data=0;
      cin>>n>>m;
      for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            cin>>num[i][j];
            mark[i][j]=1;
            if(data<num[i][j]){
               data=num[i][j];x=i;y=j;
            }
        }
      }
      //cout<<"x "<<x<<" y "<<y<<endl;
      //cout<<mark[x][y]<<endl;
      for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)dfs(i,j);
      cout<<maxb<<endl;
    }
  • 相关阅读:
    清除图片周围的空白区域
    试题识别与生成
    需要继续研究
    工作中的必要举措
    教学云平台要求的硬件配置
    处理程序安装部署标准流程
    Node.js 回调函数
    git 学习
    在 Selenium 中让 PhantomJS 执行它的 API
    RF常用库简介(robotframework)
  • 原文地址:https://www.cnblogs.com/dowson/p/3275610.html
Copyright © 2011-2022 走看看