题目链接


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;
}

P2730 魔板 Magic Squares (搜索)的更多相关文章

  1. 洛谷 P2730 魔板 Magic Squares

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

  2. 洛谷 P2730 魔板 Magic Squares 解题报告

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

  3. [洛谷P2730] 魔板 Magic Squares

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

  4. P2730 魔板 Magic Squares

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

  5. 洛谷 - P2730 - 魔板 Magic Squares - bfs

    写状态转移弄了很久,老了,不记得自己的数组是怎么标号的了. #include <bits/stdc++.h> using namespace std; #define ll long lo ...

  6. 哈希+Bfs【P2730】 魔板 Magic Squares

    没看过题的童鞋请去看一下题-->P2730 魔板 Magic Squares 不了解康托展开的请来这里-->我这里 至于这题为什么可以用康托展开?(瞎说时间到. 因为只有8个数字,且只有1 ...

  7. 【简●解】 LG P2730 【魔板 Magic Squares】

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

  8. [USACO3.2]魔板 Magic Squares

    松下问童子,言师采药去. 只在此山中,云深不知处.--贾岛 题目:魔板 Magic Squares 网址:https://www.luogu.com.cn/problem/P2730 这是一张有8个大 ...

  9. 「一本通 1.4 例 2」[USACO3.2]魔板 Magic Squares

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

随机推荐

  1. cityspace

    类别的网址:https://blog.csdn.net/u010069760/article/details/77847595 r,g,b:  250 170 160 parking   244 35 ...

  2. python面试笔试题汇总

    Python面试攻略(嗨谈篇) 110道python面试笔试题汇总,你能答对几道? Python 面试问答 Top 25 2018 年最常见的 Python 面试题 & 答案

  3. java基础—哈希编码

  4. Manifest文件

    Manifest文件是简单的文本文件,它告知浏览器缓存的内容(或不缓存的内容) Manifest文件可以分为三个部分: 1.CAHCEMANIFEST-在此标题下列出的文件将在首次下载后进行缓存. C ...

  5. Python——函数基础

    函数是什么 它相当于一个独立的代码块,可以被重复使用,如果需要增加一个功能或者修改一个功能,只需要,增加或者修改函数即可. 函数分类 内置函数 python解释器已经为我们定义好的参数,比如:len( ...

  6. 消息队列之JMS和AMQP对比

    https://blog.csdn.net/hpttlook/article/details/23391967 AMQP & JMS对比 初次接触消息队列时,在网上搜索,总是会提到如JMS.A ...

  7. Ubuntu下删除mysql数据库

    Ubuntu下删除mysql数据库 sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server ...

  8. 收集的免费API接口

    1.IP地址调用接口 这是淘宝的IP调用API http://ip.taobao.com/service/getIpInfo.php?ip=$ip 返回值:{"code":0,&q ...

  9. leetcode-9-basic-binary search

    278. First Bad Version You are a product manager and currently leading a team to develop a new produ ...

  10. linux 安装elasticsearch

    一.检测是否已经安装的elasticsearch ps aux|grep elasticsearch. 二.下载elasticsearch.tar.gz并上传至服务器usr/local/文件夹下 三. ...