牛客网 度度熊回家

来源:互联网 发布:怎么电话联系淘宝卖家 编辑:程序博客网 时间:2024/06/15 03:47

[编程题] 度度熊回家

时间限制:1秒

空间限制:32768K

一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 
输入描述:
输入一个正整数N, N <= 50。接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100


输出描述:
输出一个整数表示度度熊最少需要走的距离。

输入例子:
41 4 -1 3

输出例子:
4
水题,把第二个至第n-1个与前后数字相减求和a[i-1]-a[i]+a[i+1]-a[i];求出和最大的那一项,把他从数组中去掉,然后计算步数。

代码如下:

#include <iostream>#include <algorithm>#include <cstring>using namespace std;int main(){    int n;    int a[51],b[51],c[50];    while(~scanf("%d",&n))    {        int maxx=0,z=1,x=0,x2=0;        for(int i=0; i<n; i++)            scanf("%d",&a[i]);        for(int i=1; i<n-1; i++)        {            b[i]=abs(a[i-1]+a[i+1]-a[i]-a[i]);            x2+=b[i];            if(b[i]>maxx)            {                z=i;                maxx=b[i];            }        }        for(int i=0,j=0; i<n; i++)        {            if(i!=z)            {                c[j]=a[i];                j++;                //printf("%d\n",a[i]);            }        }        for(int i=1; i<n-1; i++)        {            x+=abs(c[i-1]-c[i]);        }        printf("%d\n",x);    }}



0 0
原创粉丝点击