求助求助大家!!360笔试 魔塔闯关编程题

我第一次只用read_line()通过率是91%
第二次只用gets(10)通过率是9%
然后我突发奇想一起用然后就ac了
但是本人新手一个,实在不理解内在原理,有没有大佬可以帮忙解释一下!我将感激不尽!!好人一生平安!!!
题目如下:(题目我借用了牛客某位大佬Serendipity-zsh的,因为我没截图哭哭)
/**
 * 魔塔闯关  
 * 魔塔是一款时尚经典小游戏,我们将魔塔简化后的规则描述如下:
 * 魔塔有n关,而你可以自由选择前往攻略哪一关,每一关只能获得一次分数。
 * 第i关攻略完成后,你将会获得ai的分数。
 * 某些关有一个特殊的宝物,你只能在攻略完这一关的时候使用这个宝物(
 * 也可以不使用,额外的宝物并不能留到其他关卡使用),
 * 这个宝物将使得这一关不得分,但是将你现有的总得分乘以2作为新的得分。
 * 你现在知道了所有关卡的通关方法,也知道了每一关的得分和是否有宝物,你现在想知道,怎么选择攻略的顺序和使用宝物的方法才能让自己的得分最大化?
 * 输入描述
 * 输入第一行包含一个整数n
 *
 * 接下来n行,每行两个整数ai,bi。ai表示第i关的分数,若bi为1,则第i关有宝物。
 *
 * 输出描述
 * 输出包含一个数,即能获得的最大分数
 */
样例输入:(我凭记忆写的了,记不太清了)
5
1 1
2 1
5 1
1 0
3 0
输出:
36
解释:先过第五关,再过第四关,第三关继续加,第二关用宝物*2,第一关也用宝物*2  ---- 36

以下是我的代码:
// 魔塔闯关
    var MTCGuan = function (n, arr) {
        let arr1 = []
        let count = 0
        for (let i = 0; i < n; i++) {
            // 判断(先把0弄出来)
            if (arr[i][1] == 0) {
                count += arr[i][0]
            } else {
                // 放入新数组
                arr1.push(arr[i][0])
            }
        }
        // 对数组排序(降序)
        arr1.sort((a, b) => b - a)
        // 遍历
        for (let i = 0; i < arr1.length; i++) {
            // 用宝物
            if (count * 2 >= count + arr1[i]) {
                count = count * 2
            } else {
                count = count + arr1[i]
            }
        }

        return count
    }

    // 输入
    let num = readInt()
    let lines
    let arr = []
    while (lines = gets(10).trim()) {
        arr.push(lines.split(" "))
    }
    while (lines = read_line()) {
        arr.push(lines.split(" "))
    }
    // 二维数组
    console.log(MTCGuan(num, arr))
我好奇的就是为什么两个输入就ac了,单单分开都不行,我实在不太理解这个输入输出的原理
如果有大佬能看看,并且解释一下的话,我真的感激不尽!!!祝大家万事顺意!!!
本人真的很想搞懂是为什么!!!感恩感恩!!!

#360笔试##秋招笔试##学习求助##赛码网笔试#
全部评论
readline有长度限制吧,
点赞 回复 分享
发布于 2022-09-09 20:52 辽宁

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务