JS (node) 的 ACM 模式 + debug方法 (01背包为例)
文章目录
- JS 的 ACM 模式
- 输入处理
- JS dubug (01背包为例)
- 动态输入
- 在本地通过 Node.js 运行和调试
- 硬编码 Hard Coding
- VS Code
JS 的 ACM 模式
在 JavaScript 中,ACM 模式一般通过 Node.js 的 readline 模块实现。
输入处理
使用 readline 模块监听输入。
将每行输入存入数组中。
当输入结束( close 事件触发)时,解析数据并处理问题。
const readline = require('readline');// 创建输入接口
const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});let input = []; // 用于存储所有输入数据// 每行输入都会触发 'line' 事件
rl.on('line', (line) => {input.push(line); // 存储每行输入
});// 输入结束后触发 'close' 事件
rl.on('close', () => {// 数据处理逻辑放在这里console.log(input); // 示例:输出输入的所有行
});
JS dubug (01背包为例)
- 这是一段01背包的JS代码
const readline = require('readline').createInterface({input: process.stdin,output: process.stdout
});let input = [];readline.on('line', (line) => {input.push(line);
});readline.on('close', () => {let [n, bagweight] = input[0].split(' ').map(Number);let weight = input[1].split(' ').map(Number);let value = input[2].split(' ').map(Number);let dp = Array.from({ length: n }, () => Array(bagweight + 1).fill(0));for (let j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}for (let i = 1; i < n; i++) {for (let j = 0; j <= bagweight; j++) {if (j < weight[i]) {dp[i][j] = dp[i - 1][j];} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}}console.log(dp[n - 1][bagweight]);
});
在浏览器中无法直接运行这段代码,因为它使用了 Node.js 的 readline 模块,这是服务器端的功能,而不是浏览器环境中的 API。
动态输入
定义:数据来自代码外部,例如用户输入、文件、数据库、API 请求等。
在本地通过 Node.js 运行和调试
代码文件保存为 单个 js
在终端运行 node solution.js (确保电脑里有node,通过node -v确认)
然后在终端中手动输入测试数据,例如:
3 4
2 1 3
4 2 3
按 Ctrl+D 表示输入结束,代码将执行并输出结果:(注意代码中输出了6为结果)

可以通过在代码中插入console.log语句,打印中间变量的值,检查程序的执行逻辑
硬编码 Hard Coding
定义:将固定的值直接写入代码中,不能在运行时动态改变。
VS Code
VS Code 的调试环境不支持动态交互的标准输入
因此
将:
const readline = require('readline');
const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});let input = [];
rl.on('line', (line) => {input.push(line);
});rl.on('close', () => {console.log("用户输入:", input);
});
替换为:
let input = ["3 4", // 模拟第一行输入"2 1 3", // 模拟第二行输入"4 2 3" // 模拟第三行输入
];(() => {console.log("模拟输入:", input);
})();
- 01背包代码变为:
// 替代 readline 输入
let input = ["3 4", // 第一行:n 和 bagweight"2 1 3", // 第二行:weight 数组"4 2 3", // 第三行:value 数组
];// 模拟 readline 的 close 逻辑
(() => {let [n, bagweight] = input[0].split(' ').map(Number);let weight = input[1].split(' ').map(Number);let value = input[2].split(' ').map(Number);// 调试输出console.log('输入的重量数组:', weight);console.log('输入的价值数组:', value);let dp = Array.from({ length: n }, () => Array(bagweight + 1).fill(0));for (let j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}for (let i = 1; i < n; i++) {for (let j = 0; j <= bagweight; j++) {if (j < weight[i]) {dp[i][j] = dp[i - 1][j];} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}}console.log('动态规划结果:', dp);console.log('最大价值:', dp[n - 1][bagweight]);
})();
在vscode中打开这一段代码,CTRL + ~打开终端。
选择 JavaScript Debug Terminal 模式

切换到这个js文件在的绝对路径根目录


选择一个debug 点

node sol.js 运行

选择上面的按钮进行 debug

还有很多其他用法,不一一列举了。
相关文章:
JS (node) 的 ACM 模式 + debug方法 (01背包为例)
文章目录 JS 的 ACM 模式输入处理 JS dubug (01背包为例)动态输入在本地通过 Node.js 运行和调试 硬编码 Hard CodingVS Code JS 的 ACM 模式 在 JavaScript 中,ACM 模式一般通过 Node.js 的 readline 模块实现。 输入处理 使用 readline 模块监听输入。 将每行输…...
vue设计与实现-框架设计
权衡的艺术 命令式和声明式 视图层框架通常分为命令式和声明式,各有优缺。jquery是一种命令式框架。命令式框架关注过程,而声明式框架关注结果。对于vue来说,过程被vue封装了,所以vue内部是命令式的,但vue暴露给用户…...
Stable Diffusion和Midjourney有什么区别?
Stable Diffusion 和 Midjourney 主要有以下区别: 目录 费用与可访问性 设备要求 安装与使用 学习成本 图像生成效果 可控性与定制性 私密性 费用与可访问性 Stable Diffusion:开源免费,任何人都可以免费下载并自行部署使用…...
即插即用,无痛增强模型生成美感!字节跳动提出VMix:细粒度美学控制,光影、色彩全搞定
文章链接:https://arxiv.org/pdf/2412.20800 代码地址:https://github.com/fenfenfenfan/VMix 项目地址:https://vmix-diffusion.github.io/VMix/ 亮点直击 分析并探索现有模型在光影、色彩等细粒度美学维度上生成图像的差异,提出…...
面向对象分析和设计OOA/D,UML,GRASP
目录 什么是分析和设计? 什么是面向对象的分析和设计? 迭代开发 UML 用例图 交互图 基于职责驱动设计 GRASP 常见设计原则 什么是分析和设计? 分析,强调是对问题和需求的调查研究,不是解决方案。例如&#x…...
【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等
1、HamonyOS 样机获取成功返回Oaid为00000000-0000-0000-0000-000000000000? 请求授权时需要触发动态授权弹窗,看一下是不是没有触发授权弹窗。 可以参考以下代码以及文档: // ets import identifier from ohos.identifier.oaid; import hilog from oh…...
30分钟学会HTML
HTML 基本语法 HTML(HyperText Markup Language)是构成网页内容的基础。它使用一系列的标签来描述网页的结构,包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…...
服务器信息整理:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统
文章目录 引言I BIOS时间Windows查看BIOS版本安装日期linux查看BIOS时间II 操作系统安装日期LinuxWindowsIII MAC 地址IV 设备序列号Linux 查看主板信息知识扩展Linux常用命令引言 信息内容:重点信息:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统 Linux…...
Golang设计模式目录
go语言实现设计模式 1 文章目录: 1.1 创建型模式 1.Golang设计模式之工厂模式2.Golang设计模式之抽象工厂模式3.Golang设计模式之单例模式4.Golang设计模式之建造者模式5.Golang设计模式之原型模式 1.2 结构型模式 6.Golang设计模式之适配器模式7.Golang设计模式之桥…...
选择IT驻场外包公司,要找有哪些资质的公司
在当今数字化快速发展的时代,IT驻场外包服务成为众多企业优化运营、提升竞争力的关键选择。无论是初创企业寻求技术起步支持,还是大型企业为降低成本、专注核心业务而将部分 IT 职能外包,IT 外包公司都扮演着至关重要的角色。然而,…...
Java List 集合详解:基础用法、常见实现类与高频面试题解析
正文 在 Java 集合框架中,List 是一个非常重要的接口,广泛用于存储有序的元素集合。本文将带你深入了解 List 接口的基本用法、常见实现类及其扩展,同时通过实际代码示例帮助你快速掌握这些知识。 👉点击获取2024Java学习资料 1…...
Arduino UNO 驱动1.8 TFT屏幕显示中文
背景 最近入手了一块1.8寸的tft屏幕,通过学习文档,已经掌握了接线,显示英文、数字、矩形区域、划线、画点等操作, 但是想显示中文的时候操作比较复杂。 问题 1、arduino uno 驱动这款屏幕目前使的是自带的<TFT.h> 库操作…...
Flink operator实现自动扩缩容
官网文档位置: 1.Autoscaler | Apache Flink Kubernetes Operator 2.Configuration | Apache Flink Kubernetes Operator 1.部署K8S集群 可参照我之前的文章k8s集群搭建 2.Helm安装Flink-Operator helm repo add flink-operator-repo https://downloads.apach…...
分布式系统架构6:链路追踪
这是小卷对分布式系统架构学习的第6篇文章,关于链路追踪,之前写过traceId的相关内容:https://juejin.cn/post/7135611432808218661,不过之前写的太浅了,且不成系统,只是简单的理解,今天来捋一下…...
vite-plugin-imagemin安装问题
vite-plugin-imagemin 是一款图片资源压缩插件,能够在打包的时候显著的降低图片资源占用。不过,在安装过程中我们遇到了如下的问题。 对于上面的问题,有以下几种常见的解决方案: 1,使用 yarn 在 package.json 内配置(推荐) 打开 package.json 配置文件,然后添加如下脚本…...
Git revert回滚
回退中间的某次提交(此操作在预生产分支上比较常见),建议此方式使用命令进行操作(做好注释,方便后续上线可以找到这个操作) Git操作: 命令:revert -n 版本号 1:git re…...
永磁同步电机预测模型控制(MPC)
永磁同步电机预测模型控制(MPC) 文章目录 前言1、模型预测控制1.1 连续控制集模型预测控制(CCS-MPC)1.2 有限控制集模型预测控制(FCS-MPC)1.3 模型预测控制的优缺点 2、永磁同步电机模型预测控制2.1 预测模型2.2 价值…...
【JAVA】switch ... case ... 的用法
语法结构: switch(表达式){ case 值1: 表达式和值1匹配时执行的语句 break; case 值2: 表达式和值2匹配时执行的语句 break; …...
基于STM32的热带鱼缸控制系统的设计
文章目录 一、热带鱼缸控制系统1.题目要求2.思路3.电路仿真3.1 未仿真3.2 开始仿真,显示屏显示水温、浑浊度、光照强度等值3.3 当水温低于阈值,开启加热并声光报警3.4 当浑浊度高于阈值,开启自动换水并声光报警3.5 当光照低于阈值,…...
Vue项目整合与优化
前几篇文章,我们讲述了 Vue 项目构建的整体流程,从无到有的实现了单页和多页应用的功能配置,但在实现的过程中不乏一些可以整合的功能点及可行性的优化方案,就像大楼造完需要进行最后的项目验收改进一样,有待我们进一步…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
