牛客网的笔试题有终端输入输出时只有回车才能出发输入结束条件吗

输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。
可以在题库搜索 华为2016校园招聘上机笔试题
我的代码是:
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let arr = [];
let result = [];
rl.on('line', (line) => {
    let lineArr = line.split(' ').map(n => {
        if (['Q', 'U'].indexOf(n) === -1) {
            return Number(n);
        }
        return n;
    });
    arr.push(lineArr);
    if (arr.length > 2) {
        const op = arr[arr.length - 1];
        switch(op[0]) {
            case 'Q': {
                let s = op[1];
                let e = op[2];

                if (s > e) {
                  let t = s;
                  s = e;
                  e = t;
                }
                result.push(Math.max.apply(null, arr[1].slice(s - 1, e)));
                break;
            }
            case 'U': {
                let i = op[1];
                let to = op[2];
                arr[1][i - 1] = to;
                break;
            }

            default: break;
        }
        if (arr.length - 2 === arr[0][1]) {
          result.forEach(r => {
            console.log(r);
          })
        }
    }
 })

但只有最后一行输入结束回车后才能打印结果,所以被牛客网判定为输出空,咋整呢?
#JavaScript#
全部评论
你在本地调试的时候才是输入回车结束,服务器上不需要回车。 举个例子吧。多个样例的a+b题目 假设的你的测试数据1.txt如下 1 1 2 2 这个数据如果2后面没有回车,你在控制台运行代码,第二个用例就不会被读入。 但是你把程序编译成a.exe 然后在控制台里运行 a.exe < 1.txt 第二个用例就会运行,牛客的服务器就是采用这种输入重定向机制,把测试用例数据给你的程序读取。
2 回复 分享
发布于 2020-04-18 23:14
https://ac.nowcoder.com/acm/contest/320 这里有很多输入输出的练习题,欢迎提前练习测试。
2 回复 分享
发布于 2020-04-18 23:15

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务