简单易懂

小猿的迷宫之旅

http://www.nowcoder.com/questionTerminal/841daaca3868485ea1924bf3fc3f2e8f

一句话总结:
深度优先遍历的时候使用三维数组保存每个点还剩按钮次数k时可以走的最大值

import java.util.Scanner;

/**
 * @author rafa gao
 */
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        // 按钮次数
        int k = scanner.nextInt();
        int[][] nums = new int[a][b];
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                nums[i][j] = scanner.nextInt();
            }
        }
        int[][][] dp = new int[a][b][k+1];
        int max = 0;
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                max = Math.max(max, help(nums, k, dp, i, j, Integer.MIN_VALUE));
            }
        }
        System.out.println(max);
    }

    private static int help(int[][] nums, int k,int[][][] dp,int a,int b,int last) {
        int aL = nums.length;
        int bL = nums[0].length;

        if (a < 0 || a >= aL || b < 0 || b >= bL) {
            return 0;
        }
        // 更小
        int temp;
        if ((temp = nums[a][b]) <= last) {
            if (k == 0) {
                return 0;
            }
            k--;
        }
        if (dp[a][b][k] != 0) {
            return dp[a][b][k];
        }
        int max = help(nums, k, dp, a - 1, b, temp);
        max = Math.max(max, help(nums, k, dp, a + 1, b, temp));
        max = Math.max(max, help(nums, k, dp, a, b - 1, temp));
        max = Math.max(max, help(nums, k, dp, a, b + 1, temp));
        max++;
        dp[a][b][k] = max;
        return max;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4387次浏览 77人参与
# AI面会问哪些问题? #
28315次浏览 569人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15426次浏览 223人参与
# 你的实习产出是真实的还是包装的? #
20448次浏览 343人参与
# 找AI工作可以去哪些公司? #
9412次浏览 251人参与
# 春招至今,你的战绩如何? #
66535次浏览 586人参与
# 厦门银行科技岗值不值得投 #
8117次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
9255次浏览 325人参与
# 中国电信笔试 #
32089次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34499次浏览 249人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340988次浏览 2175人参与
# 哪些公司真双非友好? #
69708次浏览 289人参与
# 阿里笔试 #
179060次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62709次浏览 393人参与
# 小马智行求职进展汇总 #
25140次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14927次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22276次浏览 284人参与
# 担心入职之后被发现很菜怎么办 #
291390次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26286次浏览 310人参与
# 应届生第一份工资要多少合适 #
20694次浏览 86人参与
# HR最不可信的一句话是__ #
6366次浏览 114人参与
# 沪漂/北漂你觉得哪个更苦? #
10083次浏览 194人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务