华为OD机试真题 JavaScript 实现箱子之字形摆放2023 Q1 | 100分

Posted MISAYAONE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为OD机试真题 JavaScript 实现箱子之字形摆放2023 Q1 | 100分相关的知识,希望对你有一定的参考价值。

题目

有一批箱子(形式为字符串,设为str),
要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。
例如:箱子ABCDEFG,空地宽度为3,摆放结果如图:

则输出结果为:
AFG
BE
CD

输入描述

输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串str,表示箱子;
后面部分为数字n,表示空地的宽度。例如:
ABCDEFG 3

备注:

.请不要再最后一行输出额外的空行
.str只包含字母和数字,1 <= len(str) <= 1000
.1 <= n <= 1000

思路

1:可以设置一个大小为n的数组,这样需要做的就变成了怎么把对应的字母放到指定的数组中去。

2:设置一个flag变量,这样的话就可以控制在转弯的时候放到哪个数组中去了。

JS输入输出

javascript 本身有两种模式:V8 和 Node,两种模式在输入上略有不同。

Node:

let readline = require("readline");
 
const rl = readline.createInterface(
  input: process.stdin,
  output: process.stdout,
);

rl.on('line', function(line)
    // line表示的就是输入的一行
    let lines = line.split(' ').map(Number);
);

V8:

//假设输入为:
4
5
1 2

// readline() 就表示输入的一行,和python中的 input()函数用法基本一致
let n = readline().split('').map(item=>parseInt(item));  // 4
let k = readline().split(' ').map(item=>parseInt(item)); // 5
let [nums] = readline().split(' ').map(item=>parseInt(item)); // 1 2

具体我也是参考了网上的博主的文章:ACM模式下JavaScript(js)的输入输出 V8 Node_我先润了的博客-CSDN博客

ACM格式javascript 输入输出 - 衣囧~ - 博客园 (cnblogs.com)

不熟悉的可以自行查阅。

这里给出这位博主的总结:

        node.js=V8+内置基本模块,相当于java中的JRE=JVM+java标准库

        node就是带有能操作IO和网络库的V8引擎,提供了很多可调用的API使得JavaScript能够读写文件,网络请求,系统信息等操作。对V8引擎进行了封装,执行JavaScript的速度更快,性能更好。

Code

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。

//并查集模板
class UF 
    constructor(n) 
        this.count = n
        this.item = new Array(n)
        for(let i=0;i<n;i++) 
            this.item[i]=i
        
    
    
    find(x) 
        if (x !== this.item[x]) 
            return (this.item[x] = this.find(this.item[x]))
        
        return x
    
    
    union_connect(x, y) 
        let x_item = this.find(x)
        let y_item = this.find(y)
    
        if (x_item !== y_item) 
            this.item[y_item] = x_item
            this.count--
        
    


function main(input_str, n) 

    let box_map = new Array(n)
    for (let i=0;i<n;i++)
        box_map[i] = new Array()
    
    
    let flag = true
    for (let i = 0; i < input_str.length; i++) 
        k = i % n
        if (k === 0) 
            flag = !flag
        
        if (flag) 
            k = n - 1 - k
        
        box_map[k].push(input_str[i])
    
    for (let i=0;i<n;i++)
         console.log(box_map[i].join(""))
    

 
 
main("ABCDEFG" ,3)

要求

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld

语言限定:
C(clang11), C++(clang++11), Pascal(fpc 3.0.2), Java(javac 1.8), Python2(2.7.3), 
php(7.4.7), C#(mcs5.4), ObjC(gcc 5.4), Pythen3(3.9), JavaScript Node(12.18.2), JavaScript V8(6.0.0),
Sqlite(3.7.9), R(4.0.3), Go(1.14.4), Ruby(2.7.1), Swift(5.3), matlab(Octave 5.2), Pypy2(pypy2.7.13),
Pypy3(pypy3.6.1), Rust(1.44), Scala(2.11.12), Kotlin(1.4.10), Groovy(3.0.6), TypeScript(4.1.2), mysql(8.0)

以上是关于华为OD机试真题 JavaScript 实现箱子之字形摆放2023 Q1 | 100分的主要内容,如果未能解决你的问题,请参考以下文章

华为OD机试真题 JavaScript 实现密室逃生游戏2023 Q1 | 100分

华为OD机试Golang解题 - 箱子之形摆放

100%通过率华为OD机试真题 C 实现密室逃生游戏2022 Q4 | 100分

独家华为OD机试提供C语言题解 - 箱子之形摆放

华为OD机试真题Java实现密室逃生游戏真题+解题思路+代码(2022&2023)

华为OD机试真题 JavaScript 实现打印机队列2023 Q1 | 100分