首页 > 试题广场 >

度度熊回家

[编程题]度度熊回家
  • 热度指数:10480 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。
但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?

输入描述:
输入一个正整数N, N <= 50。
接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100


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

输入

4
1 4 -1 3

输出

4
function distance(num, arr){
        var result = [];
        var result1 = [];
        var result2 = [];
        var sum1 = 0;
        var sum2 = 0;
        result = arr.splice(0, num-2).concat(arr.slice(-1));
        result.forEach(function(ele){
            if (ele > 0) {
                result1.push(ele)
            }else{
                result2.push(ele)
            }
        })
        result1.sort(function(a, b){
            return a - b
        })
        result2.sort(function(a, b){
            return a - b
        })
        if (result1[arguments.length-1] + result2[0] > 0 || 'string') {
            result1.pop();
        }else{
            result2.shift();
        }
         result1.forEach(function(ele){
            sum1 += ele;
        })
         result2.forEach(function(ele){
            sum2 += ele;
        })
        console.log(sum1 + sum2);
  
    }
    distance(4, [1, 4, -1, 3]);

编辑于 2018-04-13 01:20:04 回复(0)
/*来一份JS的吧 思想就是找那个该去的点i 它的特征就是该点
到相邻左右两个点的距离之和 s1 与相邻左右两个点之间的距离 s2 
s1-s2的值最大 这样话去掉这个点会省最多的路程
*/
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
var k=2
var arr=[];
rl.on('line', function (input) {
  arr.push(input);
    if(k==arr.length){
        var narr=arr[1].split(' ');
        for (var i=0;i<narr.length;i++){
            narr[i]=parseInt(narr[i]);
        }
        if(arr[0]==2){
            console.log(Math.abs(narr[0]-narr[1]));
        }
        if(arr[0]==3){
                console.log(Math.abs(narr[0]-narr[2]));
            }
        if(arr[0]>3){
                     var disarr=[];
                for(var i=1;i<narr.length-1;i++){
        var sumdis1=Math.abs(narr[i]-narr[i-1])+Math.abs(narr[i]-narr[i+1]);
        var sumdis2=Math.abs(narr[i-1]-narr[i+1]);
        var difdis= Math.abs(sumdis1-sumdis2);
                   disarr.push(difdis); 
                } 
               
                    var p=lookpoint(disarr);
                    var mindis=0;
               //  console.log(p);
                    for(var i=0;i<narr.length-1;i++){ 
                         if(i==p){
                      mindis=mindis+Math.abs(narr[i]-narr[i+2]);
                            //console.log(mindis);
                       i=i+1;
                        continue;
                         }
                        else{
                      mindis=mindis+Math.abs(narr[i]-narr[i+1]);//3
                        }          
                    }
                   console.log(mindis);
                 function lookpoint(disarr){
                var maxdifdis=Math.max.apply(null,disarr);
                 for (var j=0;j<disarr.length;j++){
                     if(disarr[j]==maxdifdis){
                         var p=j;
                         break;
                     }
                 }  
                     return p;
                 }     
                }
    }
});
发表于 2017-09-11 00:37:12 回复(0)