蛇形填数 rust解法

蛇形填数。

在n×n方阵里填入1,2,...,n×n,要求填成蛇形。例如,n=4时方阵为:

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4

解法如下:

rust 复制代码
use std::io;

fn main() {
    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    let n: usize = buf.trim().parse().unwrap();
    let mut arr = vec![vec![0; n]; n];

    let mut i = 1;
    let mut x = 0;
    let mut y = n - 1;
    arr[x][y] = 1;
    while i < n * n {
        while x + 1 < n && arr[x + 1][y] == 0 {
            i += 1;
            x += 1;
            arr[x][y] = i;
        }
        while y > 0 && arr[x][y - 1] == 0 {
            i += 1;
            y -= 1;
            arr[x][y] = i;
        }
        while x > 0 && arr[x - 1][y] == 0 {
            i += 1;
            x -= 1;
            arr[x][y] = i;
        }
        while y + 1 < n && arr[x][y + 1] == 0 {
            i += 1;
            y += 1;
            arr[x][y] = i;
        }
    }
    for row in &arr {
        println!("{:?}", row);
    }
}
相关推荐
Yue丶越2 分钟前
【C语言】自定义类型:联合体与枚举
c语言·开发语言
小哀26 分钟前
🌸 入职写了一个月全栈next.js 感想
前端·后端·ai编程
ziwu10 分钟前
【民族服饰识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·后端·图像识别
程序员Easy哥10 分钟前
ID生成器第一讲:原理和常见几种生成器
后端
q***735512 分钟前
SpringBoot中使用TraceId进行日志追踪
spring boot·后端·状态模式
Penge66618 分钟前
Elasticsearch 跳表(Skip List):有序结果合并的 “性能电梯”
后端
Penge66629 分钟前
Elasticsearch BKD 树与 PointRangeQuery:为何数值查询会有性能瓶颈
后端
csbysj202037 分钟前
DOM 节点
开发语言
木木一直在哭泣41 分钟前
【收藏级】Java Stream.reduce 全面解析:从零到通透(原理图 + 实战 + 最佳实践)
后端
Penge66642 分钟前
Elasticsearch Filter 缓存:Bitset 如何让查询速度飙升
后端