题目链接

Solution

这道题,我是用 \(map\) 做的.
具体实现,我们用一个 \(string\) 类型表示任意一种情况.
可以知道,排列最多只有 \(8!\) 个.
然后就是直接的广搜了.直接用初始串去操作即可.
关于字典序,我们直接按 \(ABC\) 启用操作即可.

Code

/*
Problem: 2730
Time: Day -95
*/
#include<bits/stdc++.h>
using namespace std;
map <string,string> kkk;
map <string,int> v;
map <string,int> vis;
queue<string>q;
string ans;void output(string s)
{string fuck=kkk[s];int len=fuck.length();cout<<len<<endl;for(int i=0;i<len;i++)cout<<fuck[i];
}void bfs()
{string s="12345678";q.push(s);kkk[s];vis[s]=1;while(q.empty()!=1){string now=q.front();q.pop();if(now==ans){output(now);exit(0);}for(int i=1;i<=3;i++){string tt=now;if(i==1){   for(int j=0;j<4;j++)swap(tt[j],tt[8-j-1]);if(!vis[tt]){kkk[tt]=kkk[now]+'A',v[tt]=1;q.push(tt),vis[tt]=1;}}if(i==2){tt[0]=now[3]; tt[7]=now[4];tt[1]=now[0]; tt[2]=now[1]; tt[3]=now[2];tt[4]=now[5]; tt[5]=now[6]; tt[6]=now[7];if(!vis[tt]){kkk[tt]=kkk[now]+'B',v[tt]=1;q.push(tt),vis[tt]=1;}}if(i==3){tt[1]=now[6]; tt[2]=now[1];tt[5]=now[2]; tt[6]=now[5];if(!vis[tt]){kkk[tt]=kkk[now]+'C',v[tt]=1;q.push(tt),vis[tt]=1;}}}}
}int main()
{int a[10];for(int i=0;i<8;i++)cin>>a[i],ans+=('0'+a[i]);bfs();return 0;
}

转载于:https://www.cnblogs.com/Kv-Stalin/p/9436920.html

P2730 魔板 Magic Squares (搜索)相关推荐

  1. P2730 魔板 Magic Squares

    不看题解肯定不会系列... 这道题可以用Cantor展开解决. Cantor展开可以求出一个数组是在全排列中的第几个. 具体怎么操作自己百度. Cantor展开的公式是:\(a[1] * (n - 1 ...

  2. 魔板 Magic Squares(bfs优化)

    [USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...

  3. [USACO3.2]魔板 Magic Squares

    [USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...

  4. 洛谷P2730 [IOI]魔板 Magic Squares

    题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜 ...

  5. 【题解】Luogu P2730 魔板

    蒟蒻的第一道蓝题--好像也没有蓝的程度 一篇无STL的超弱题解(入门写法无误了QAQ 传送门 很经典的一道BFS 这是初始状态. 操作A 操作B 操作C 思路1 不使用cantor展开的情况 1. 对 ...

  6. USACO 3.2 Magic Squares 魔板

    题目大意: 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8 ...

  7. Magic Squares 魔板 (BFS+HASH)

    Description 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8 ...

  8. 魔板(洛谷-P2730)

    题目描述 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8个 ...

  9. HDU 1430 魔板(康托展开+BFS+预处理)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

最新文章

  1. python登录网页账号密码_python03网页用户名密码登录
  2. [unreal4入门系列之七] UE4中的Actor类和Pawn类
  3. Linux yum 安装MariaDB
  4. 用python爬虫爬取无水印图片_使用python 爬虫,爬取图片
  5. 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
  6. 超炫酷的HTML5视频播放器 支持手机移动页面
  7. 水晶报表 动态控制图片显示 Changing pictures dynamically in Crystal Report
  8. Android第十七课 Jni string空串跨模块使用崩溃注意事项
  9. 【干货】火山视频去水印下载使用介绍
  10. 服务器443端口响应代码,使用443端口远程服务器
  11. XShell远程登录华为云服务器
  12. LabVIEW如何减少下一代测试系统中的硬件过时6
  13. 高职单招计算机基础知识题,高职单招计算机基础练习题
  14. 在windows终端中进行复制粘贴的方法
  15. 怎么辨别一个公司是不是外包?
  16. 帝国竞争算法(ICA)详解与python 实现
  17. 计算机组成原理设计,计算机组成原理课程设计
  18. 0x80072f8f-0x20000错误解决办法
  19. BMZCTF:掘地三尺
  20. java“/”除号意思是:取整 并不会出现小数

热门文章

  1. 图的割点(边表集实现)
  2. asp实现批量录入数据
  3. Javascript事件委托
  4. ubuntu 设置开机启动与关闭开机启动(适用于部分linux系统)
  5. 我的代码和注释都写的像坨屎,那又怎么样?
  6. MYSQL:MYSQL索引为什么选择B+树?
  7. 03.native方法(JNI)
  8. 12:MYSQL 使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度)
  9. java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
  10. java keeplive,java http长链接(keep-alive)导致的问题