Dijkstra算法51NOD1459

51nod 1459 迷宫游戏(迪杰特斯拉Dijkstra算法) 题目: 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开 阅读详情

题意:你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么?
思路:用dijkstra算法找最短路径就行了,但是每一步找路径的时候,如果权值是相同的,那应该走分数比较大的那一条路。

#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
#define INF 0x3f3f3f
using namespace std;
int map[505][505],v[505],dis[505],n,m,end,stare,score[505],ans[505];
void Dij(int x)
{
    ans[x]=score[x];//ans[i]记录从起始点到i所获的得分
    memset(v, 0, sizeof(v));
    for (int i = 0; i < n; ++i) //更新该结点连的边
    {
        if (map[x][i] < INF)
            ans[i] = ans[x] +score[i];
        dis[i] = map[x][i];
    }
    dis[x] = 0;
    v[x] = 1; //设为已访问
    for (int i = 1; i < n; ++i) //寻找最短路径
    {
        int u = 0, min = INF;
        for (int j = 0; j < n; ++j) //找到距离当前访问的点最近的点
        {
            if (!v[j] && dis[j] < min)
            {
                min = dis[j];
                u = j;
            }
        }
        v[u] = 1; //访问该点
        for (int k = 0; k < n; ++k)  //更新距离和分数
        {
            if (!v[k] && dis[k] > map[u][k] + dis[u])
            {
                dis[k] = map[u][k] + dis[u];
                ans[k] = ans[u] + score[k];
            }
        }
        for (int k = 0; k < n; ++k)
        {
            if (dis[k] == map[u][k] + dis[u])
                ans[k] = max(ans[k], ans[u] + score[k]);//若路程相同,找出得分最大的
        }
    }
    printf("%d %d\n", dis[end], ans[end]);
}   
int main()
{
    int x,y,z;
    scanf("%d%d%d%d",&n,&m,&stare,&end);
    for(int i=0;i<=n;i++)
        for(int j=0;j<=n;j++)
        {
            map[i][j]=INF;
        }
    for(int i=0;i<n;i++)
        scanf("%d",&score[i]);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        map[x][y]=map[y][x]=z;
    }
        Dij(stare);
}
用C++编写的迷宫问题 这是我的一个课程设计,主要是用c++语言写的一个迷宫老鼠问题。。。。 主要的特点就是在DOS环境下实现老鼠的动态移动效果……有兴趣的看看 立即下载

相关推荐

数据结构课程设计C++迷宫代码

此程序是课程设计的源代码,用于数据结构课程设计的源代码,为迷宫代码

最短路径—Dijkstra算法和Floyd算法

注意:以下代码 只是描述思路,没有测试过!! Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中...

weixin_33704591的博客 4058

时光轴demo 悬浮日期

时光轴,根据日期分类 有兴趣可以下下看看。看不懂的联系我就行

51Nod1459 迷宫游戏(带权最短路)

1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大

妍恐龙的博客....^~^眼熟我 754

UniApp实现多端支付功能完整实现指南

支付业务流程多端支付实现安全性保障异常处理最佳实践支付基础知识多端支付实现统一支付封装安全性处理异常处理最佳实践根据具体业务场景选择合适的支付方式注重安全性和用户体验做好异常处理和日志记录持续优化和改进支付流程关注我,持续分享前端项目开发经验!

weixin_63454527的博客 2128

11种图像清晰度评价函数附MATLAB代码

博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代...

kungfu_rabbit的博客 5万+

问题 F: 迷宫游戏[dfs]

题目描述 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大得分是多少么? 输入 第一行4个整数n (<=500), m, start, end

qq_43660826的博客 522

SimpleFOC STM32实战:基于F103与HAL库,剖析速度环与电流环的协同控制

本文详细介绍了基于STM32F103与HAL库的SimpleFOC实战应用,重点剖析速度闭环控制与电流环的协同工作原理。通过开发环境搭建、参数调试技巧及性能优化方案,帮助开发者高效实现无刷电机精准控制,适用于机器人、无人机等高精度应用场景。

weixin_29170327的博客 476

算法详解之狄克斯特拉算法

上一篇文章,我们了解了广度优先搜索算法(BFS),BFS主要用来解决图的可达路径验证和最小路径问题,即从一个顶点A到另一个顶点B,是否有可达路径,如果有那么求出其到达的最少步骤。那么这里的最短路径就如果加上时间或者其他元素来表示的话,真的就是最短的吗? 这里,我们不妨将达到各个顶点的边加上一个花费时间来修饰,这里用来修饰边的元素,我们称之为权重,加上权重的边即为加权边,如下图所示: 还是上一篇文...

程序员客栈 814

张量分解浅谈(四 Tucker 分解)

学完了SVD算法之后,我们继续回到张量几大分解的学习上来,本期学习的主要内容是张量的 Tucker 分解 以及 前面的CP分解还留下一点没有说完,正好一并补齐!后面的公式我将采用颜色标记,红色代表必须掌握,蓝色尽量掌握! 在这之前先附一张图,包含了各种运算符号的名称含义,大部分是前面说过或者使用过的: Tensor decomposition一 . Tucker 分解公式介绍和原理二 . 张量的 n-Rank 一 . Tucker 分解公式介绍和原理 我们先来看一张被使用过很多次的Trucker 分解图

欢迎来到 豪哥 的博客 1万+

高光谱目标检测论文学习(1)—— Hyperspectral Target Detection:Hypothesis Testing,SNR and SA Theories

前言 从这篇开始,将会学习一些高光谱目标检测的论文,我仍然把这篇文章放到了读论文专栏里,但是不对其进行顺序编号了,因为这个方向是比较小众的。今天来学习这篇TGRS2021的最新论文,讲的比较详细,相对比较适合初学者入门。我之前也写过一些有关目标检测的论文,但是高光谱目标检测(HTD)和之前的我们学的目标检测是不同的,因为其检测的对象不是普通摄像头得来的数字图像,而是高光谱遥感图像。其包含了很多光谱信息,而光谱信息本身经过处理后就可以作为特征,因此很多情况下就无需使用广义的目标检测问题中的卷积神经网络等方式去

MrBamboo2000的博客 7485

《算法图解》第七章迪克斯特拉学习心得

1、狄克斯特拉算法 (Dijkstra's algorithm) 对于广度优先搜索找出的路径,只适用于图中边的权值都相同的情况,如果权值不相同,可能找出的未必是最短路径。如图:对于不同权值的图,我们使用狄克斯特拉算法寻找最短路径,该算法包含以下四个步骤:找出“最便宜”的节点, 即可在最短时间内到达的节点。更新该节点的邻居的开销, 其含义将稍后介绍。重复这个过程, 直到对图中的每个节点都这样做了。计...

sysu63的博客 3119

《备考系统架构设计师》 - 专栏介绍和目录

本专栏包括所有历年真题及详解、章节知识核心总结、精选高分论文、补充知识、专题总结等。欢迎订阅专栏。

数据知道的博客 4万+

51nod 1459 迷宫游戏(dij)

题目链接:51nod 1459 迷宫游戏 dij裸题。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #define CLR(a,b) mem...

dhe56357的博客 248

【Claude Code】Extra inputs are not permitted 报错:代理网关剥离 Beta 标头的修复

通过代理或 LLM 网关连接 Anthropic API 时,Claude Code 报 "Extra inputs are not permitted"?根因是中间件删除了 anthropic-beta 请求标头,导致 Beta 字段被 API 拒绝。本文详解标头转发配置和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 回退方案。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 125

Cesium 实战 04 - 标绘功能系列之画点(draw point)

Cesium 实战 - 标绘功能之画点(draw point)。

非科班Java出身GISer的博客 1084

51nod 1459迷宫游戏 Dijkstra堆优化

51nod  1459迷宫游戏  Dijkstra堆优化 题目链接:51nod  1459迷宫游戏 题意:给定源点和终点, 每经过一个点就会得到该点对应的分数, 每走过一条边,就会增加相应的时间,让你求源点到终点的最短时间以及在该最短时间下的最终最大得分。 分析: 依旧还是带权单源点最短路。还是用d[i].first表示从源点到i点的路径长度,用d[i].second表示从源点到i点的得

Fighting! 897

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

51Nod - 1459 迷宫游戏 dijkstra拓展

/* * 51Nod 1459 迷宫游戏 dijkstra拓展 */ package p01; import java.io.*; import java.util.Scanner; public class t1 { static int[] grade; static int[][] graph; static final int INFINITY = 1<

PeersLee的博客 1401

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)

题目链接 中文题,迪杰斯特拉最短路径算法模板题。 #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f int visit[510],vis[510],map[510][510],low[510],a[510]; int n,m,start,end; void dijkstra() {...

weixin_30325071的博客 224

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

迷宫游戏 51Nod - 1459 【最短路变形】

迷宫游戏 51Nod - 1459 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息

lzs_lazy 377

51nod 1459 迷宫游戏 最短路径dijkstra

题目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1459 思路:使用dijkstra算法 把start作为开始节点,输出end节点即可 #include <cstdio> #include <cstring> #include <iostream> using namespace ...

霖的博客 280

51nod 1459 迷宫游戏 dijkstra变形

51nod 的迷宫问题 其实是dijkstra算法的变形 我们在松弛操作的时候 对于cost值相同的节点 我们需要重新计算一下value值 然后取最大; 用归纳法证明这个问题 : 首先我们先假设 可以到达 k 点的并且到达时间最短的所有点 a1 a2 。。。。。 an(类似的 这些点已经有了cost最小的时候value最大的性质)  对于每一个点 我们在进行松弛操作的时候 必然会对 a

beating_spark 333

51Nod 1459 迷宫游戏 dijkstra拓展

1459 迷宫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你

' 泪 添 无 言's blog 1927

51nod 1459 迷宫游戏Dijkstra变形

你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提下,你的最大

逝水流年轻染尘 778

51Nod 1459:迷宫游戏(Dijkstra)

题目链接 你来到一个迷宫前。该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数。还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间。游戏规定了你的起点和终点房间,你首要目标是从起点尽快到达终点,在满足首要目标的前提下,使得你的得分总和尽可能大。现在问题来了,给定房间、道路、分数、起点和终点等全部信息,你能计算在尽快离开迷宫的前提...

818

51Nod 1459 迷宫游戏 (dijkstra)

51Nod 1459 在Dijkstra的基础上加了一点东西,考察对Dijkstra算法理解的程度。还是要加深理解啊。 #include #include #include #include #include using namespace std; const int inf = 0x3f3f3f3f; int map[550][550]; int vis[550]

Benjamin_Z的博客 759
上一篇: 拓扑排序hdu1285
下一篇: 树状数组hdu1541
UKey_
博客等级 码龄10年 258粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值