小莫蓝桥刷题之路(跳跃DFS)

纪小莫 纪小莫 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

 

import java.util.Scanner;

public class Main {
    static Scanner sr = new Scanner(System.in);
    static int n = sr.nextInt();
    static int m = sr.nextInt();
    static int[][] map = new int[n][m];
    static int dx[] = {0,0,0,1,2,3,1,2,1};
    static int dy[] = {1,2,3,0,0,0,1,1,2};
    //这里的dx,dy的意思是他在二维矩阵所做出的动作
    static int max_length = Integer.MIN_VALUE;//先定义一个变量求最长度,即题目所需的总权值和最大
public static void main(String[] args) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            map[i][j] = sr.nextInt();//输入每个点的权值
        }
    }
    dfs(0,0, map[0][0]);//map[0][0]表示第一个点的权值
    System.out.println(max_length);
}
private static void dfs(int i, int j, int length) {
    if(i==n-1 && j== m-1)
    max_length = Math.max(length, max_length);//这里是求最长的长度,即最大的权值和,将每一次的权值和length进行比较,得出最大的一个。
    for (int k = 0; k < dx.length; k++) {
        int nx = i + dx[k];//对每一个点进行递归,遍历dx[]中每一个数
        int ny = j + dy[k];//对每一个点进行递归,遍历dy[]中每一个数
        //(nx,ny),(0,1)(0,2)(0,3)(1,0)(2,0)(3,0)(1,1)(2,1)(1,2)
        if (nx >= 0 && ny >= 0 && nx < n && ny < m ) {
            dfs(nx,ny,length+map[nx][ny]);//将nx,ny赋值给i,j再次进行循环,同时计算出每一次路径的权值
        }
    }
}
}

 

...全文

相关推荐

算法第十期——DFS(深度优先搜索)的剪枝优化

DFS剪枝:减少不必要的计算,减少运行时间。

小叶pyか

【期望 DFS】P9428 [蓝桥杯 2023 国 B] 逃跑

本文摘要: 题目描述了一个树形星系结构,要求计算从随机星球到根节点的最短时间期望。关键点在于跳板星球的特殊跳跃机制:每次跳跃有概率p失败并转向父节点。解题思路采用动态规划,定义dp[u]为节点u到根节点的期望时间。对于跳板节点,直接计算父节点时间加1;非跳板节点则考虑多次跳跃失败的概率。通过DFS遍历树结构,维护每个节点的失败概率累计值,最终计算所有节点的期望时间平均值。算法复杂度为O(n),适用于大规模数据(n≤1e6)。样例分析验证了计算方法的正确性。

软件架构师何志丹

《模式识别与数据挖掘》配套PPT课件

《模式识别与数据挖掘》配套PPT课件

Bryan Ding

科技成果转化项目进场交易前,评估备案环节需要准备哪些材料?_8.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核

人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核

Bryan Ding
评论
收藏 已收藏
分享
返回顶部