魔法权杖强化

2018-10-10  本文已影响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))
上一篇下一篇

猜你喜欢

热点阅读