百度2017春招<度度熊回家问题>

本文介绍了一个关于度度熊回家最短路径的问题解决方法。度度熊需要从起点走到终点,但可以忽略一个中间点以减少行走距离。通过算法计算在忽略不同点时的最短路径,并选择使总行程最短的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?

#include<iostream>  
#include<algorithm>    
#include<cmath>  
using namespace std;  
int main(){  
    int n;cin>>n;  
    int result=0;  
    vector<int>temp(n,0);  
    cin>>temp[0];  
    for(int i=1;i<n;++i){  
        cin>>temp[i];  
        result+=abs(temp[i]-temp[i-1]);  //在没有去除点时,总路程
    }  
    int maxx=0;  
    for(int i=1;i<temp.size()-1;++i){  
        maxx=max(maxx,abs(temp[i]-temp[i-1])+abs(temp[i]-temp[i+1])-abs(temp[i+1]-temp[i-1]));   //计算去掉中间点后  路程减少最多的距离
    }  
   
    cout<<result-maxx<<endl;  //总路程- 减少路程最多的即可
}  

 

转载于:https://www.cnblogs.com/strongYaYa/p/6781171.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值