首页 > 解决方案 > 如何在 Kattis 问题解决中进行分行?

问题描述

我目前正在 Kattis 做一些测试,但我一直坚持这个。到目前为止,我编写的代码在 Visual Studio 代码中 console.logging 时给了我最后一个 else 语句。如果我输入一个低于 100 的数字,它会给我第一个 if 语句,但是 Kattis 只会给我错误。问题出在哪里?

我正在使用 JavaScript (Nodejs)。

以下是我正在处理的代码:

const readline = require('readline')
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.on('line', (line) => {
    var n = line.split(' ');
    for (var i = 0; i < n.length; i++) {
        var r = parseInt(n[i][0]);
        var e = parseInt(n[i][1]);
        var c = parseInt(n[i][2]);
        if (r > e - c) {
            console.log("do not advertise");
        }
        else if (r < e - c) {
            console.log("advertise");
        } else {
            console.log("does not matter");
        }
    }
}); 

标签: javascriptnode.jssplitreadline

解决方案


你可以拿一个标志来获取第一行,如果你得到了行号,只需拆分行来获取值。

const readline = require('readline')
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

var first = true;

rl.on('line', (line) => {
    if (first) {
        n = +line;
        first = false;
        return;
    }
    if (!n || !n--) return; // exit early for not needed lines

    var [r, e, c] = line.split(' ').map(Number); // take numbers

    if (r > e - c) {
        console.log("do not advertise");
    } else if (r < e - c) {
        console.log("advertise");
    } else {
        console.log("does not matter");
    }
}); 

推荐阅读