JsNode算法题acm模式输入
js分为jsNode和JsV8两种输入输出方式,一般的执行代码还是一样的
牛客是两种都支持
华为的题目大多只支持jsNode
本文主要介绍jsNode的输入
JsNode
首先他是逐行输入的,就和py差不多,一定是每行每行地输入,用字符串line(也可以换名字)来接收,用line.split( )来分割字符串,从而处理
jsNode最开始的几行代码,都是很麻烦的代码模板,具体作用我不清楚,下面是我尽量简化后的,可以根据自己的情况来改
一、单行单变量输入
比如:123
比如:abc
let cin = require(readline) const RL = cin.createInterface({ input: process.stdin, output: process.stdout }) RL.on(line, line => { console.log(line) //要是想转化为整数可以(+line) })
二、单行多变量输入
比如:123 435
比如:abcx asd asd
比如:asd,asd,erer
let cin = require(readline) const RL = cin.createInterface({ input: process.stdin, output: process.stdout }) let str="" RL.on(line, line => { str=line.split( ) let len=str.length; for(let i=0;i<len;i++){ console.log(str[i]) } })
三、多行多变量输入
比如:
2 123 234 bca asd
第一行的数2表示下面输入还有2行
let cin = require(readline) const RL = cin.createInterface({ input: process.stdin, output: process.stdout }) let T = 1 //进入RL函数的次数 let str="" RL.on(line, line => { str=line.split( ) if(T==1){ //第一次进的时候,str[0]就是接下来输入的行数 n=+str[0] mp=new Array(n) //开一个大小为n的数组 }else{ mp[T-2]=str //接下来每输入一行,T会+1,根据T来判断输入是第几行的数据 if(T==n+1){ //要是T=n+1了(自己计算出的),表示是最后一行输入 //这时要进行算法代码运行,因为全部数据输入完了 for(let i=0;i<n;i++) console.log(mp[i]) } } T++ })
通过代码可以看出,sjNode的输入,RL函数要不断进入,每次进入时line就是一行的输入
所以要用T这种全局变量来记录进入的次数,通过判断T,来存储数据
这个输入模板也算是最全的,即是是单行也建议用这个。