蛇形填数 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);
    }
}
相关推荐
程序员牛奶2 分钟前
[Algo-2]双指针技巧:你真的学懂双指针了吗?
后端
Kir1to18 分钟前
RabbitMQ 核心概念与快速安装
后端
Kir1to21 分钟前
Exchange 交换机类型,六种工作模式与 Spring Boot 整合
后端
我材不敲代码22 分钟前
Python 基础:列表的切片与嵌套列表使用技巧
开发语言·python
彦为君28 分钟前
JavaSE-03-集合框架(详细版)
java·开发语言·python
我命由我1234536 分钟前
Android Framework P3 - MediaServer 进程、认识 ServiceManager 进程
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime
:12139 分钟前
java基础---一些没注意的
java·开发语言
yuhuofei20211 小时前
【Python入门】Python中的输入与输出
开发语言·python
imuliuliang1 小时前
Laravel 2.x:PHP框架的早期革新之路
开发语言·php·laravel
跨境数据猎手1 小时前
跨境商城反向海淘系统开发全流程逻辑(下)
开发语言·php