谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)rust解法

news2024/11/23 18:44:42

有一个5*5的网格,其中恰好有一个格子是空的,其他格子各有一个字母。一共有4种指令:A, B, L, R,分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指令序列(以数字0结束),输出指令执行完毕后的网格。如果有非法指令,应输出“This puzzle has no final configuration.”,例如,图3-5中执行ARRBBL0后,效果如图3-6所示。
在这里插入图片描述
解法

use std::io;

fn main() {
    let mut grid: Vec<Vec<char>> = vec![];
    for _i in 0..5 {
        let mut buf = String::new();
        io::stdin().read_line(&mut buf).unwrap();
        let cs = buf.trim().chars().collect();
        grid.push(cs);
    }
    println!("{:#?}", grid);

    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    let cmds = buf.trim();
    println!("{}", cmds);

    let mut kong = (0, 0);
    for i in 0..5 {
        for j in 0..5 {
            if grid[i][j] == ' ' {
                kong = (i, j);
                break;
            }
        }
    }
    for i in cmds.chars() {
        match i {
            'a' => {
                if kong.0 < 1 {
                    panic!("This puzzle has no final configuration");
                }
                let c = grid[kong.0 - 1][kong.1];
                grid[kong.0][kong.1] = c;
                grid[kong.0 - 1][kong.1] = ' ';
                kong = (kong.0 - 1, kong.1);
            }
            'b' => {
                if kong.0 >= 4 {
                    panic!("This puzzle has no final configuration");
                }
                let c = grid[kong.0 + 1][kong.1];
                grid[kong.0][kong.1] = c;
                grid[kong.0 + 1][kong.1] = ' ';
                kong = (kong.0 + 1, kong.1);
            }
            'l' => {
                if kong.1 < 1 {
                    panic!("This puzzle has no final configuration");
                }
                let c = grid[kong.0][kong.1 - 1];
                grid[kong.0][kong.1] = c;
                grid[kong.0][kong.1 - 1] = ' ';
                kong = (kong.0, kong.1 - 1);
            }
            'r' => {
                if kong.1 >= 4 {
                    panic!("This puzzle has no final configuration");
                }
                let c = grid[kong.0][kong.1 + 1];
                grid[kong.0][kong.1] = c;
                grid[kong.0][kong.1 + 1] = ' ';
                kong = (kong.0, kong.1 + 1);
            }
            '0' => {
                break;
            }
            _ => {
                panic!("This puzzle has no final configuration");
            }
        }
    }
    println!("{:#?}", grid);
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1091290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模板进阶和反向迭代器

文章目录 模板非类型模板参数模板特化函数模板特化类模板特化 模板分离编译 反向迭代器 模板 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c…

黑龙江省人口与社会经济数据集(2015-2016年)

摘要 a. 数据内容&#xff08;数据文件/表名称&#xff0c;包含的观测指标内容&#xff09; 黑龙江省人口与社会经济数据集&#xff08;2015-2016年&#xff09;反映了黑龙江省社会经济、人口和劳动力、农业生产、金融、旅游、卫生、教育、社会保障等情况&#xff0c;包含年末…

MTC证书|欧盟与英国金属类产品清关新要求

英国禁止进口俄钢材的通告内容 从2023年 9 月 30 日起&#xff0c;欧盟和英国将对在第三国加工的特定钢铁产品实施新的制裁&#xff0c;这些产品包含俄罗斯原产的钢铁原料。进口商需要在进口时申报进口货物是否合规。 MTC认证 欧盟严抓MTC认证 获悉&#xff0c;从10月1日起&a…

倒置边框半径卡片

效果展示 CSS 知识点 实现多曲面的思路 实现整体布局 <div class"card"><div class"img_box"></div><div class"content"><div class"price"></div></div> </div>.card {position…

微信小程序入门开发教程

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

【LeetCode】11. 盛最多水的容器

1 问题 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器…

[自用] win 10安装cuda 10.2和cuDNN 10.2

之前已经安装cuda 10.0和cuDNN 10.0 参考博文&#xff1a; https://blog.csdn.net/qq_50677040/article/details/132131346 https://blog.csdn.net/weixin_67615387/article/details/128807503 安装目录&#xff1a; cmd验证

Android百度地图sdk设置Marker不同颜色

使用百度地图sdk&#xff0c;在地图上画一个marker图标很简单&#xff0c;如下 private fun drawMark(point: LatLng){var resId R.mipmap.icon_device//这个资源是一张图片//构建Marker图标val bitmap BitmapDescriptorFactory.fromResource(resId)//构建MarkerOption&#…

计算机视觉:池化层的作用是什么?

本文重点 在深度学习中,卷积神经网络(CNN)是一种非常强大的模型,广泛应用于图像识别、目标检测、自然语言处理等领域。而池化层作为CNN中的一个关键步骤,扮演着优化神经网络、提升深度学习性能的重要角色。本文将深入探讨池化层的作用及其重要性,帮助读者更好地理解和应…

计算机网络 实验四 子网划分(网络层)

实验目的&#xff1a; 通过实验掌握下列知识&#xff1a; ① 熟悉子网掩码算法和网关&#xff0c;掌握子网划分方法。 ② 了解路由器的作用&#xff0c;掌握静态路由的基本配置。 实验过程分析&#xff1a; 静态路由基本配置 按照拓扑图接线【截图】。PC_1和PC_2设置IP地址…

实时美颜技术的崭新时代:美颜SDK开发与应用

美颜技术的崭新时代已经来临&#xff0c;实时美颜SDK的开发和应用成为数字世界中不可或缺的一部分。从社交媒体到视频直播&#xff0c;实时美颜技术已经在各种应用中取得了广泛成功&#xff0c;吸引了数百万用户。本文将深入探讨实时美颜技术的发展、SDK的开发&#xff0c;以及…

计算机网络 实验五 RIP与OSPF实验(网络层算法)

实验目的&#xff1a; 通过实验掌握下列知识&#xff1a; 1. 掌握RIP路由协议基本原理&#xff0c;熟悉RIP协议基本配置。 2. 掌握OSPF路由协议基本原理&#xff0c;熟悉配置单区域OSPF。 实验过程分析&#xff1a; RIP协议基本配置 按照拓扑图接线【截图】。对RTA进行RI…

java智慧停车系统源码

java智慧停车系统源码 技术架构&#xff1a; 后端开发语言java&#xff0c;采用最新springcloudalibaba版本开发&#xff0c;框架oauth2springboot2.6(可升级到3.0)doubble3.2&#xff0c;使用nacos, seata&#xff0c;sentinel&#xff0c;&#xff0c;数据库mysql/mongodb/…

【经验】解决重置 Windows 10 时报错:“无法找到介质” 的错误

按以下流程走&#xff1a; 管理员方式打开cmd输入命令: reagentc /info如果Enabled为空&#xff0c;则说明没有设置正确找到以下三个文件&#xff1a; WinRE.wimboot.sdiReAgent.XML 下载地址&#xff1a;http://www.winwin7.com/Soft/XTBD-555.html?_t1577956053 将这3个文…

Windows 10 用 Hyper-V 安装 Ubuntu

0、快速创建&#xff08;已启用Hyper-V&#xff09; &#xff08;默认安装路径&#xff1a;C:\Users\Public\Documents\Hyper-V\Virtual hard disks&#xff09; 可通过设置更改&#xff1a; 安装操作系统 1、启用 Windows 功能&#xff1a;Hyper-V 然后重启电脑 2、搜索 …

微信小程序开发者账号注册

✨博文作者&#xff1a;烟雨孤舟 &#x1f496; 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介&#xff1a;作为微信小程序云开发爱好者&#xff0c;以下是个人总结的学习笔记&#xff0c;如有错误&#xff0c;请多多指教&#xff01;…

DDoS防护技术解析:深入了解当前的DDoS防护技术和方法

前言 网络安全已经成为每个企业和个人都不能忽视的问题。DDoS&#xff08;分布式拒绝服务&#xff09;攻击&#xff0c;作为一种常见的网络攻击方式&#xff0c;已经成为许多组织和个人的头痛之源。为了有效地应对这种攻击&#xff0c;各种DDoS防护技术和方法应运而生。 如果…

实验室超声波清洗机如何清洗PH电极?

PH电极是一个非常精确的检测元件&#xff0c;电极主要是玻璃电极作为测量电极&#xff0c;甘汞电极作为参考电极&#xff0c;如果PH电极被污染后&#xff0c;其敏感性会降低&#xff0c;稳定性会变差。所以对于PH清洁电极尤为重要。PH计电极的清洗方法有很多。最原始的清洗方法…

Android项目在 app 中通过 WebView 访问 url显示空白,使用浏览器可以打开,Android WebView加载出现空白页面问题解决

这是服务器证书校验WebView的安全问题 服务器证书校验主要针对 WebView 的安全问题。在 app 中需要通过 WebView 访问 url&#xff0c;因为服务器采用的自签名证书&#xff0c;而不是 ca 认证&#xff0c;使用 WebView 加载 url 的时候会显示为空白&#xff0c;出现无法加载网…

公众号留言功能怎么恢复?评论功能如何开启?

为什么公众号没有留言功能&#xff1f;2018年2月12日&#xff0c;TX新规出台&#xff1a;根据相关规定和平台规则要求&#xff0c;我们暂时调整留言功能开放规则&#xff0c;后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…