zoukankan      html  css  js  c++  java
  • 牛客网在线判题系统JavaScript(V8)使用

      JavaScript作为一种弱类型的编程语言,语法和C/C++、JAVA等存在差别,但是对于大部算法题,不只是C/C++、JAVA,也依然可以使用JavaScript来实现。所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题。

      大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行。但苦恼的是,我们不知道如何像C/C++这样实现输入,类似于C的scanf 和 C++的cin函数。因为平时JavaScript基本都是函数式编程,就是将程序全都封装在函数里面,然后再调用函数,通过console控制台或者node控制台查看结果。前提是,输入已经指定了。于是乎,牛客网在线判题系统的测试用例是无论如何也通过不了的,因为他的测试用例的输入根本就没法传进去。

      主要原因,其实还是牛客网已经提供了针对JavaScript(V8 6.0.0)的解决办法,在这里简要介绍一下,希望对大家有所帮助。

      以下是A+B题目的样例代码,http://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417

      计算a+b的和,每行包行两个整数a和b,对于每行输入对应输出一行a和b的和,距离:

    输入

    1 5  

    2 6

    输出

    6

    8

    (1)选择Javascript(v8 6.0.0)

    (2)获取输入(注意:readline得到的是字符串,本例需要转化为数字)

    while(line=readline()){
        var lines = line.split(' ');  //字符串转换为字符数组
        var a = parseInt(lines[0]);
        var b = parseInt(lines[1]);
        print(a+b);
    }

    当然 如果是函数的话,也可以像下面这样

    while(line=readline()){
        var lines = line.split(' ');
        var a = parseInt(lines[0]);
        var b = parseInt(lines[1]);
        function add(m,n){
            return m+n;
        }
        print(add(a,b));
    }

    (3)提交运行,可以查看用例通过情况

    V8实现多行输入

    //多行输入举例
    //打印一个多行矩阵
    var n = parseInt(readline());
    var ans = 0;
    for(var i = 0;i < n; i++){
        lines = readline().split(" ")
        for(var j = 0;j < lines.length; j++){
            ans += parseInt(lines[j]);
        }
        print(ans);
    }

    Node实现多行输入(固定行数)

    var readline = require('readline');
    const rl = readline.createInterface({
            input: process.stdin,
            output: process.stdout
    });
    var countLine = 1;
    var tokens = [];
    rl.on('line', function(line){
       tokens.push(line);
       if(countLine == 2){
           var arr1 = tokens[0].split('');
           var arr2 = tokens[1].split('');
            for(var i=0; i<arr2.length; i++){
                for(var j=0; j<arr1.length; j++){
                    if(arr1[j] == arr2[i]){
                        arr1.splice(j,1);
                    }
                }
            }
            console.log(arr1.join(''));       
       }else{
           countLine++;
       }
    });
    var readline = require('readline');
     
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
     
    var K = 2;
    var arr = [];
    rl.on('line', function(data) {
        arr.push(data);
        if (K == arr.length) {
            var result = deal(arr);
            console.log(result);
            arr.length = 0;
     
        }
    });
     
    function deal(inputs) {
        //直接根据目标字符分割字符串成数组,计算数组长度减一就是所求。注意不区分大小写。
        return inputs[0].toLowerCase().split(inputs[1].toLowerCase()).length-1;
    }

    Node实现多行输入(行数不固定)

    process.stdin.resume();
    process.stdin.setEncoding('ascii');
      
    var input = "";
    var input_array = "";
      
    process.stdin.on('data', function (data) {
        input += data;
    });
      
    process.stdin.on('end', function () {
        input_array = input.split("
    ");
       //示例代码     
    var len = input_array.length;     var result = [];     for(var i=0; i<len; i++){         var temp = input_array[i].trim().split(' ');         for(var j=0; j<temp.length; j++){             if(temp[j]!=='' && result.indexOf(temp[j]) == -1){                 result.push(temp[j]);             }         }     }     console.log(result.length); });

    参考资料:牛客网在线判题系统使用帮助

  • 相关阅读:
    day17 内置方法、数学模块、randrange随机模块、序列化模块pickle
    线性模型L2正则化——岭回归
    KMP算法
    KNN算法:KNN-classifier和KNN-regressor
    机器学习开篇——编译器的选择
    STL好坑
    树状数组学习笔记
    无题
    最小树形图:朱刘算法
    2019ICPC徐州站题解
  • 原文地址:https://www.cnblogs.com/guorange/p/7229152.html
Copyright © 2011-2022 走看看