美文网首页
魔法权杖强化

魔法权杖强化

作者: 我的天气很好啦 | 来源:发表于2018-10-10 22:46 被阅读0次

    滴滴笔试
    🍞环境:牛客的编译环境
    🍰语言:JavaScript
    ☕️难点:其实不难..开始我写了一个add函数专门去处理arr[i]+arr[i+1],后来觉得没什么用,就删了,直接tmp=arr[i] + arr[i+1],然后过不去..时间到了以后才明白,直接加是字符串相加..于是我又加了parseInt,但是因为时间到了,我也不知道这个对不对。代码思路是没问题的。
    🍊题目:时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 65536KB;其他语言 589824KB
    题目描述:
    有一把魔法权杖,权杖上有n颗并排的法术石(编号为1到n)。每颗法术石具有一个能量值,权杖的法术强度等同于法术石的最小能量值。权杖可以强化,一次强化可以将两颗相邻的法术石融合为一颗,融合后的能量值为这两颗法术石能量值之和。现在有m次强化的机会,请问权杖能强化到的最大法术强度是多少?
    输入
    第一行包含两个正整数n,m,表示n颗法术石,m次强化机会。
    第二行为n个用空格隔开的正整数v1, v2, … ,vn,vi表示编号为i的法术石具有的能量值。
    数据范围:1≤m<n≤100000,1≤vi≤100000
    输出
    输出1个整数,表示权杖的最大的法术强度。

    样例输入
    6 3
    1 7 2 2 5 9
    样例输出
    8

    Hint
    样例说明:合并1、7得到 { 8 2 2 5 9 },合并2、2得到 { 8 4 5 9 },合并4、5得到 { 8 9 9 },法术强度等于8。

    🍇我的代码:

    var Max = function(meg,arr) {
    //请在此处编写你的代码,其他部分请勿修改,否则不记分。
    //begin
        var num = meg.split(' ')[1],
            start = -1,
            end = -1,
            tmp;
        arr = arr.split(' ');
        while(num--){
            var result = 0;
            for(let i = 0; i < arr.length - 1; i++){
                if( i != i+1){
                    tmp = parseInt(arr[i])+ parseInt(arr[i+1]);
                    if(tmp < result && result != 0){
                        result = tmp;
                        start = i;
                        end = i+1;
                    }
                    else if(result == 0){
                        result = tmp;
                        start = i;
                        end = i + 1;
                    }
                }
                else{
                    result = arr[i];
                }
            }
            arr[start] = result;
            arr.splice(end,1);
        }
        return arr.sort()[0];
    //end
    }
    // 以下代码请勿修改
    var meg = read_line();
    var arr = read_line();
    print(Max(meg,arr))
    

    相关文章

      网友评论

          本文标题:魔法权杖强化

          本文链接:https://www.haomeiwen.com/subject/hjxvaftx.html