zoukankan      html  css  js  c++  java
  • HDOJ1078 FatMouse and Cheese【动态规划】武科大ACM暑期集训队选拔赛2题

    开始的时候没有AC,在网上找了一个和我思路一样的代码。
    通过和网上代码对照,找到了自己错误。已注释。
    Problem : 1078 ( FatMouse and Cheese )     Judge Status : Accepted
    RunId : 5915406    Language : C    Author : qq1203456195
    Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #define N 101
     5 int a[N][N],b[N][N];
     6 int n,k;
     7 int dp(int x,int y)
     8 {
     9     int maxn,i,tx,ty;
    10     if(b[x][y]!=-1)
    11         return b[x][y];
    12     maxn=0;
    13     for (i=1;i<=k;i++)
    14     {
    15         tx=x+i;
    16         if(tx>=0 && tx<n && a[tx][y]>a[x][y])
    17         {
    18             if(b[tx][y]==-1)//没有求出max,就进行dp
    19                 b[tx][y]=dp(tx,y);
    20             if(b[tx][y]>maxn)
    21                 maxn=b[tx][y];
    22         }            
    23         tx=x-i;
    24         if(tx>=0 && tx<n && a[tx][y]>a[x][y])
    25         {
    26             if(b[tx][y]==-1)        
    27                 b[tx][y]=dp(tx,y);
    28             if(b[tx][y]>maxn)        
    29                 maxn=b[tx][y];
    30         }            
    31         ty=y+i;
    32         if(ty>=0&&ty<n&&a[x][ty]>a[x][y])
    33         {
    34             if(b[x][ty]==-1)        
    35                 b[x][ty]=dp(x,ty);
    36             if(b[x][ty]>maxn)        
    37                 maxn=b[x][ty];
    38         }            
    39         ty=y-i;
    40         if(ty>=0&&ty<n&&a[x][ty]>a[x][y])
    41         {
    42             if(b[x][ty]==-1)        
    43                 b[x][ty]=dp(x,ty);
    44             if(b[x][ty]>maxn)        
    45                 maxn=b[x][ty];
    46         }            
    47     }
    48     b[x][y]=maxn+a[x][y];
    49     return b[x][y];
    50 }
    51 int main()
    52 {
    53     int i,j;
    54     while (scanf("%d%d",&n,&k),~n||~k)
    55     {
    56         for (i=0;i<n;i++)
    57             for (j=0;j<n;j++)
    58             {
    59                 scanf("%d",&a[i][j]);
    60                 b[i][j]=-1;
    61             }
    62                 
    63         printf("%d\n",dp(0,0));
    64     }
    65     return 0;
    66 }
    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    web前端图片上传
    二级联动
    前端框架
    获取URL域名
    监听横屏竖屏
    下载中间件、爬虫中间件
    起始url的调度原理
    自定义代理IP
    爬虫深度控制
    手动处理cookie(实现一个点赞爬虫)
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2490469.html
Copyright © 2011-2022 走看看