< 返回版块

cloud-mist 发表于 2021-10-11 16:38

  • 本人新手,想用rust做算法题,但是对输入不知道如何处理。

  • 例子,3行,每行6个数字。

    3 6
    1 1 1 1 1 1 
    2 2 2 2 2 2
    3 3 3 3 3 3
    

评论区

写评论
Ryan Li 2021-10-11 17:53

写算法题不推荐依靠标准输入输出,用单元测试更合适,这样既可以复现,也不用一遍遍敲输入值。拿一个简单的例子供参考。

Bai-Jinlin 2021-10-11 17:20

在给你来一个nt写法

use itertools::Itertools;
use std::io::{stdin, BufRead};
use std::iter::repeat;
fn main() {
    let line = stdin().lock().lines().next().unwrap().unwrap();
    let vec: Vec<i32> = line.split(' ').filter_map(|n| n.parse().ok()).collect();
    println!("{}",(1..=vec[0])
            .map(|n| repeat(n).take(vec[1] as usize).join(" "))
            .join("\n"));
}
Bai-Jinlin 2021-10-11 16:59

全用标准库写的,用第三方crate还能写的更简单。

use std::io::stdin;
fn main() {
    let mut line = String::new();
    stdin().read_line(&mut line).unwrap();
    //pop \n
    line.pop();

    let vec: Vec<i32> = line.split(' ').filter_map(|n| n.parse().ok()).collect();
    for i in 1..=vec[0] {
        for _ in 1..=vec[1] {
            print!("{} ", i);
        }
        println!();
    }
}
1 共 3 条评论, 1 页