P2730 魔板 Magic Squares (搜索)
题目链接
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 (搜索)的更多相关文章
- 洛谷 P2730 魔板 Magic Squares
P2730 魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 ...
- 洛谷 P2730 魔板 Magic Squares 解题报告
P2730 魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 ...
- [洛谷P2730] 魔板 Magic Squares
洛谷题目链接:魔板 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都 ...
- P2730 魔板 Magic Squares
题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜 ...
- 洛谷 - P2730 - 魔板 Magic Squares - bfs
写状态转移弄了很久,老了,不记得自己的数组是怎么标号的了. #include <bits/stdc++.h> using namespace std; #define ll long lo ...
- 哈希+Bfs【P2730】 魔板 Magic Squares
没看过题的童鞋请去看一下题-->P2730 魔板 Magic Squares 不了解康托展开的请来这里-->我这里 至于这题为什么可以用康托展开?(瞎说时间到. 因为只有8个数字,且只有1 ...
- 【简●解】 LG P2730 【魔板 Magic Squares】
LG P2730 [魔板 Magic Squares] [题目背景] 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 ...
- [USACO3.2]魔板 Magic Squares
松下问童子,言师采药去. 只在此山中,云深不知处.--贾岛 题目:魔板 Magic Squares 网址:https://www.luogu.com.cn/problem/P2730 这是一张有8个大 ...
- 「一本通 1.4 例 2」[USACO3.2]魔板 Magic Squares
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...
随机推荐
- 1066: 输入n个数和输出调整后的n个数
1066: 输入n个数和输出调整后的n个数 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2739 Solved: 1578[Submit][Stat ...
- SQLServer死锁
死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用.请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源.非剥夺条件( ...
- HTML5<figure>元素
HTML5<figure>元素是用来定义页面文档中独立的流内容(图像,图表,照片,代码块),figure内容与主内容有关,如果被删除,则不影响主文档流的产生. HTML5<figca ...
- UICollectionView实现无限轮播
#import "KGNewsController.h"#import "KGNewsCell.h"#import "KGNews.h"#i ...
- sqlserver的实例名忘记了
电脑图标右击/管理/服务和应用程序/服务 也可以直接services.msc打开 打开服务,找到sqlserver的服务,这个服务括号中的名称就是实例名了,但是要加上localhost,也就是loca ...
- 一些恶搞人的c++程序
top1: 不停打开的cmd(磁盘操作系统) 代码如下: #include<windows.h> using namespace std; int main() { system(&quo ...
- OwinStartupAttribute出错
尝试加载应用时出现了以下错误.- 找不到包含 OwinStartupAttribute 的程序集.- 找不到包含 Startup 或 [AssemblyName].Startup 类的程序集.若要禁用 ...
- python-数据类型总结 (面试常问)
目录 数字类型总结 拷贝 浅拷贝 深拷贝 数字类型总结 一个值 多个值 整型/浮点型/字符串 列表/字典/元祖/集合 有序 无序 字符串/列表/元祖 字典/集合 可变 不可变 列表/字典/集合 整型/ ...
- Linux学习-编译前的任务:认识核心与取得核心原始码
什么是核心 (Kernel) Kernel 其实核心就是系统上面的一个文件而已, 这个文件包含了驱动主机各项硬 件的侦测程序与驱动模块. 核心文件通常被放置成 /boot/vmlinuz-xxx ,不 ...
- HDU 5239 Doom 线段树
题意: 有\(n(1 \leq n \leq 10^5)\)个数,和\(m(1 \leq m \leq 10^5)\)操作,和一个计算\(s\),一切运算都在模\(MOD\)进行的. 操作\(l, \ ...