zoukankan      html  css  js  c++  java
  • hdu1078FatMouse and Cheese

    一开始用map+max作为返回值,答案是对的,超时了,因为一些格子原先算过了,后来再用到它时,又得算它的值,所以超时了

    用p来表示它的范围,没有*i,所以错了

    用mark来表示从边走到它这里要的的最大权重和,第一次把mark放到if外面,结果,当mark不是0时,mark又变回map+max了,所以错了,把它放到if里面,ACCEPT了

    #include "iostream"
    #include "string.h"
    using namespace std;
    int p[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
    int n,k,map[110][110],mark[110][110];
    
    int dfs(int x,int y){
      int max=0,i,j,xx,yy,pos=mark[x][y];
      if(pos==0){     //
       for(i=1;i<=k;i++){
        for(j=0;j<4;j++){
          xx=x+p[j][0]*i;  //
          yy=y+p[j][1]*i;
          //cout<<"xx "<<xx<<" yy "<<yy<<endl;
          if(xx>=0&&xx<n&&yy>=0&&yy<n&&map[xx][yy]>map[x][y]){  //
            int ans=dfs(xx,yy);
            max=max>ans?max:ans;
          }
        }
       }
        mark[x][y]=map[x][y]+max;//
      }
      //cout<<"mark[x][y] "<<mark[x][y]<<endl;
      //cout<<"x "<<x<<" y "<<y<<endl;
      return mark[x][y];
    }
    
    int main(){
      int i,j;
      while(1){
        cin>>n>>k;
        if(n==-1&&k==-1)break;
        memset(mark,0,sizeof(mark));
        for(i=0;i<n;i++){
          for(j=0;j<n;j++)
          cin>>map[i][j];
        }
        cout<<dfs(0,0)<<endl;
      }
    }
  • 相关阅读:
    linux命令学习之:cd
    SSH原理与运用
    java遍历当前会话所有Session
    spring+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
    python检测编码
    python安装模块
    python网络爬虫
    系统编码 python编码
    python 中文路径
    python读取文件乱码
  • 原文地址:https://www.cnblogs.com/dowson/p/3275330.html
Copyright © 2011-2022 走看看