当前位置: 首页 > news >正文

ACM算法

在ACM模式下使用JavaScript/TypeScript获取输入值

在ACM编程竞赛或在线判题系统(如LeetCode、牛客网等)中,JavaScript/TypeScript需要特定的方式来获取输入值。以下是几种常见的获取输入的方法:

1. 使用Node.js的readline模块

这是最常见的处理ACM模式输入的方式:

const readline = require('readline');const rl = readline.createInterface({input: process.stdin,output: process.stdout
});// 存储输入的行
const input = [];rl.on('line', (line) => {input.push(line);
}).on('close', () => {// 所有输入读取完毕后执行// 处理输入数据const [n, m] = input[0].split(' ').map(Number);const arr = input[1].split(' ').map(Number);// 在这里编写你的算法console.log(result);
});

2. 使用fs模块一次性读取所有输入

const fs = require('fs');// 同步读取
const data = fs.readFileSync('/dev/stdin', 'utf8');
const input = data.trim().split('\n');// 处理输入
const [a, b] = input[0].split(' ').map(Number);
// ...其他处理

3. 针对不同输入格式的处理示例

示例1:单行输入

输入:5 10

const [a, b] = input[0].split(' ').map(Number);

示例2:多行输入

输入:

3
1 2 3
4 5 6
7 8 9
const n = parseInt(input[0]);
const matrix = [];
for (let i = 1; i <= n; i++) {matrix.push(input[i].split(' ').map(Number));
}

示例3:不确定行数的输入

// 每行一个数字,直到文件结束
const numbers = input.map(Number);

4. TypeScript版本

import * as readline from 'readline';const rl = readline.createInterface({input: process.stdin,output: process.stdout
});const input: string[] = [];rl.on('line', (line: string) => {input.push(line);
}).on('close', () => {const [n, m]: number[] = input[0].split(' ').map(Number);// ...其他处理
});

注意事项

  1. 不同的在线判题系统可能有细微的输入差异,需要根据具体平台调整
  2. 注意输入数据的类型转换(字符串转数字等)
  3. 大数据量时考虑使用流式处理而非一次性读取所有数据
  4. 记得在代码结束时调用process.exit(0)或确保程序能正常退出

希望这些示例能帮助你在ACM模式下使用JavaScript/TypeScript处理输入数据!

相关文章:

  • redis 缓存穿透,缓存击穿,缓存雪崩
  • LeetCode Hot100 (1/100)
  • 数据科学和机器学习的“看家兵器”——pandas模块 之一
  • flutter 视频通话flutter_webrtc
  • 【网络编程】八、Cookie Session 抓包原理
  • 火山引擎实时音视频 高代码跑通日志
  • 深度学习Dropout实现
  • day25-异常处理
  • Python爬虫之品牌口碑数据抓取
  • 设计模式(9)——创建型模式之工厂方法
  • golang -- 如何让main goroutine等一等
  • 微信小程序之按钮短时间内被多次点击问题
  • 【taro3 + vue3 + webpack4】在微信小程序中的请求封装及使用
  • DeepSeek 赋能 VR/AR:开启智能交互新纪元
  • 基于开源AI大模型与S2B2C生态的个人品牌优势挖掘与标签重构研究
  • vue使用路由技术实现登录成功后跳转到首页
  • Vue3在使用渲染函数h时候使用v-loading
  • 「数学::博弈论」Nim游戏(尼姆游戏)/ Luogu P2197(C++)
  • RabbitMQ是什么?应用场景有哪些?
  • 基于EMD-PCA-LSTM的光伏功率预测模型研究
  • 普京确定俄乌谈判俄方代表团名单
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 著名连环画家庞邦本逝世
  • 共情场域与可持续发展——关于博物馆、美术馆运营的新思考
  • 广州地铁十一号线赤沙车辆段工程高坠事故调查报告公布:1人重伤且漏报
  • 董军同法国国防部长举行会谈