cf 3a Shortest path of the king

本文探讨了使用C++编程语言实现字符比较、整数读取及操作,并通过循环输出方向指令的过程,展示了C++在控制输出和逻辑处理方面的应用。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    char c1,c2;
    int x1,x2;
    cin>>c1>>x1>>c2>>x2;
    int a=c2-c1,b=x2-x1;
    int ans=max(abs(a),abs(b));
    printf("%d\n",ans);
    while(a!=0||b!=0)
    {
        if(a>0)
        {
            printf("R");
            a--;
        }
        else if(a<0)
        {
            printf("L");
            a++;
        }
        if(b<0)
        {
            printf("D");
            b++;
        }
        else if(b>0)
        {
            printf("U");
            b--;
        }
        printf("\n");
    }
    return 0;
}

### 最短路径问题与最短简单路径问题的区别 最短路径问题通常是指在一个图中,找到从一个节点到另一个节点的最短路径。图可以是有向图或无向图,边的权重可以是正数、负数或零。最短路径问题的目标是找到一条路径,使得路径上所有边的权重之和最小。最短路径问题在实际应用中非常广泛,例如网络路由、交通导航和社交网络分析等[^1]。 最短简单路径问题则是最短路径问题的一个子集。它要求路径中不能包含任何环路,即路径必须是简单的。换句话说,最短简单路径必须是无环的路径。这是因为在某些图中,可能存在负权环路(negative-weight cycle),即一个环路的总权重为负数。如果路径中允许包含这样的环路,则可以通过多次绕行该环路无限次减少路径总权重,从而导致最短路径不存在。因此,在最短路径问题中,如果图中存在负权环路,则可能无法定义唯一的最短路径。为了避免这种情况,最短简单路径问题明确要求路径不能包含任何环路[^2]。 在大多数最短路径算法中,例如 Dijkstra 算法和 Bellman-Ford 算法,通常假设图中没有负权环路,并且寻找的是最短简单路径。Dijkstra 算法适用于所有边权为非负数的图,而 Bellman-Ford 算法可以处理存在负权边的情况,但不能处理负权环路。这些算法保证找到的路径是简单路径,即不包含任何重复节点的路径[^2]。 ### 示例代码:Dijkstra 算法实现最短简单路径搜索 ```python import heapq def dijkstra(graph, start): # 初始化距离字典,所有节点距离为无穷大 distances = {node: float(&#39;infinity&#39;) for node in graph} distances[start] = 0 # 优先队列 priority_queue = [(0, start)] while priority_queue: current_distance, current_node = heapq.heappop(priority_queue) # 如果当前节点已经处理过,跳过 if current_distance > distances[current_node]: continue # 遍历邻居节点 for neighbor, weight in graph[current_node].items(): distance = current_distance + weight # 如果找到更短路径,更新距离并加入队列 if distance < distances[neighbor]: distances[neighbor] = distance heapq.heappush(priority_queue, (distance, neighbor)) return distances ``` ### 总结 - **最短路径问题**关注的是在图中找到从一个节点到另一个节点的路径,使得路径的边权总和最小,允许包含环路(但在实际应用中通常避免负权环路)。 - **最短简单路径问题**则进一步限制路径不能包含环路,确保路径是“简单”的,这是大多数最短路径算法所求解的形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值