一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?
输入描述:
输入一个正整数N, N <= 50。 接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100
输出描述:
输出一个整数表示度度熊最少需要走的距离。
输入例子:
4 1 4 -1 3
输出例子:
4
这道题,就是除了第一个坐标点和最后一个坐标点之外,其余的点可以选择一个点忽略不走。那么就可以有N-2种走法。
#include <iostream> #include <algorithm> #include "string.h" #include "stdio.h" #include <vector> #include<utility> #include "math.h" #include <set> using namespace std; int main() { int n; cin>>n; int min_dis=-1; vector<int> arr; for(int i=0;i<n;i++) { int m; cin>>m; arr.push_back(m); } for(int i=1;i<n-1;i++) { int a=0; int j=1; int distance=0; for(;j<n;j++) { //这里的意思就是,arr[i]为这N-2中的要被剔除的点,如果arr[j]==arr[i],则跳过。 if(j==i) { continue; } distance+=abs(arr[j]-arr[a]); a=j; cout<<distance<<endl; } if(min_dis == -1) { min_dis = distance; } else if(distance<min_dis) min_dis = distance; } cout<<min_dis<<endl; return 0; }