攻城掠地(bfs,优先队列)

该博客介绍了如何运用宽度优先搜索(BFS)和优先队列来寻找从起点(0,0)到终点(n-1,m-1)的最短时间路径。在给定的n*m二维网格中,每个点代表一个时间值,目标是最小化攻占敌人大本营的时间。通过BFS策略和优先队列,可以在找到到达目标的路径后立即输出最短时间,确保效率。" 133834664,7337247,电商个性化推荐:大数据与智能架构解析,"['大数据', '人工智能', '推荐系统', '架构设计', '协同过滤']
摘要由CSDN通过智能技术生成

题目描述
今天LZY攻城小分队出动了,他们需要在尽可能短的时间内攻占敌人的大本营。战场是一个n * m的二维网格,LZY小分队初始在(0,0)点,敌军大本营在( n -1 ,m - 1)点
每个点上有一个对应的数字代表LZY小分队攻占这个据点需要耗费的时间,现在作为LZY小分队的指挥官,你需要指定一条合适的路线,使LZY小分队能用最短的时间攻占敌人大本营。
输入
测试样例由多组测试数据组成。每组测试数据第一行输入两个正整数n , m ( 1 <= n,m <= 100)
接下来输入n * m 个数字 ,每个数字不超过 500
输出
输出LZY小分队攻占敌人大本营所需要的最短时间
样例输入 Copy
3 3
1 2 3
1 2 3
1 2 3

样例输出 Copy
8
思路:用bfs找路存在优先队列里,每次第一次计算 都是算 最小的值,之后只要找到因为无论如何,都是可以到n,m的 所以只要到n,m直接输出 那就是最少的时间了;```

#include<bits/stdc++.h>
using namespace std;
struct s{
    int x;
    int y;
    int sum;
};
struct q1{
    bool operator()(s a1,s a2){
        return a1.sum>a2.sum; 优先队列判断方向 和普通的不一样 > 就是 <  ,<就是大于
    }
};
priority_queue<s,vector<s>,q1>q;
int a[105][105],b[105][1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值