lanqiao OJ 261 九宫重排

简介: lanqiao OJ 261 九宫重排

1.九宫重排 - 蓝桥云课 (lanqiao.cn)

这个题跟前的那个华容道的题差不多,我们需要用map记录string有没有走过,然后用bfs遍历,

把三排的图利用  /  和  %  变成一行的字符,当找到刚开始要的找的目标字符串的时候就返回他的map值

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<map>
 
using namespace std ;
int d[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
queue<string> q ;//bfs
string a ,b;//初始字符串,目标字符串
map<string,int> mp ;//用mp记录距离,已经变换过的次数
 
int bfs(){
    while(!q.empty()){
        string now = q.front() ;
        q.pop() ;
        if(now == b) return mp[now] ;//找到目标字符串就返回
        int cnt1 = now.find('.') ;//找到‘.’在字符串的位置
        int x = cnt1 / 3 , y = cnt1 % 3 ;
        for(int i = 0 ; i < 4 ; i ++){
            int tx = x + d[i][0] , ty = y + d[i][1]  ;       
            if(tx<0||tx>=3||ty<0||ty>=3) continue ;
            int cnt2 = tx * 3 + ty ;  
            string ts = now ;
            ts[cnt1] = now[cnt2] ;
            ts[cnt2] = '.' ;
 
            if(mp[ts]) continue ;//如果这个字符串已经被遍历过就继续循环
 
            q.push(ts) ;
            mp[ts] = mp[now] + 1 ;//mp值加一
        }
    }
}
 
int main(){
    cin >> a >> b ;
    q.push(a) ;
    
    mp[a] = 0 ;//当初始状态的时候不用变换为0
    cout << bfs() << endl ;
    return 0 ;
}
目录
相关文章
|
12月前
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 3513 岛屿个数(2023省赛)
56 2
|
12月前
lanqiao OJ 108 发现环
lanqiao OJ 108 发现环
59 1
|
12月前
lanqiao OJ 230 调手表
lanqiao OJ 230 调手表
86 1
|
JavaScript 前端开发
成功解决:jQuery is not defined
这篇文章介绍了如何解决在使用jQuery时浏览器控制台报错`jQuery is not defined`的问题,通过在webpack配置文件中添加特定的插件配置来确保jQuery被正确加载和使用。
成功解决:jQuery is not defined
|
12月前
|
存储 安全 网络安全
云计算与网络安全:云服务、网络安全、信息安全的技术探讨
在当今数字化时代,云计算和网络安全已成为企业和个人用户不可或缺的技术。本文将深入探讨云计算的基本概念、云服务类型、网络安全的重要性、信息安全的关键要素以及如何确保数据安全。通过分析这些技术领域的发展趋势和挑战,我们将为读者提供关于如何在云环境中保护数据安全的实用建议。
241 10
|
12月前
|
机器学习/深度学习 监控 安全
智能混凝土:自我修复与环境感应的建筑材料
【10月更文挑战第21天】智能混凝土是一种集自我修复与环境感应于一体的先进建筑材料。通过复合智能型组分,智能混凝土能够实现自感知、自适应和自修复,显著提高结构的耐久性和安全性,减少维修成本,促进环保节能。未来,智能混凝土将向多功能化、智能化和绿色化方向发展,为建筑行业带来革命性变革。
|
12月前
|
存储 Linux 数据中心
网络工程师如何很快划分出子网?
【10月更文挑战第7天】
382 0
网络工程师如何很快划分出子网?
|
传感器 人工智能 数据挖掘
柔性电子器件:未来可穿戴技术的趋势
【9月更文挑战第30天】柔性电子器件是一种将电子元件集成在柔性基板上的新兴技术,具备出色的灵活性和适应性。本文探讨了其定义、发展历程及关键技术,并展望了其在可穿戴设备中的应用前景。柔性电子器件不仅能够实时监测生理信号,还能实现自然图像显示和持久能量供应,推动医疗健康、智能手表等领域的发展。尽管面临制造成本和耐久性等挑战,其市场潜力巨大,预计到2025年将达到340亿美元,引领智能穿戴技术的新时代。
|
12月前
|
SQL 缓存 Java
揭秘物联网性能优化的终极攻略!提升系统效率的七大法宝
小米在物联网项目中遇到了性能优化问题,他从数据库、集群、硬件、代码、并行处理、JVM及操作系统等多个层面分享了优化经验。包括SQL优化、分库分表、缓存使用、水平扩容、分布式调度、硬件升级、代码分析、并行处理、GC调优及操作系统参数调整等。小米强调性能优化需结合实际情况,逐步提升系统响应速度与稳定性。欢迎留言交流,共同进步。关注他的微信公众号“软件求生”,获取更多技术干货。
277 0
|
12月前
|
Ubuntu 编译器 C语言
Ubuntu安装gcc 以及g++
这篇博客介绍了在Ubuntu系统中安装gcc和g++编译器的步骤,包括解决安装过程中可能遇到的问题,如锁文件冲突,并提供了一些安装GCC和G++的命令和技巧。
343 0