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 题 ...
 
随机推荐
- C Library - <limits.h>
			
Introduction The limits.h header determines various properties of the various variable types. The ma ...
 - Silverlight日记:动态生成DataGrid、行列装换、动态加载控件
			
本文主要针对使用DataGrid动态绑定数据对象,并实现行列转换效果. 一,前台绑定 <sdk:DataGrid x:Name="dataGrid2" Style=" ...
 - ORACLE的SQL JOIN方式大全
			
ORACLE的SQL JOIN方式大全 在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a que ...
 - 配置Xcode的Device Orientation、AppIcon、LaunchImage
			
以下图片指出的 TARGETS→General 面板的信息. 下面我们讲讲根据 APP 需求配置我们的Xcode: 1.设置 Device Orientation,指定 APP 支持设备的方向 ,我们 ...
 - webpack4搭建Vue开发环境笔记~~持续更新
			
项目git地址 一.node知识 __dirname: 获取当前文件所在路径,等同于path.dirname(__filename) console.log(__dirname); // Prints ...
 - DC 课程内容
 - Linux 常用命令(三)
			
一.less --分页查看文件:方面查阅(编辑)大文件 说明:支持方向键盘和鼠标向上向下浏览 -N 显示行号 二.head --output the first part of files 默认显示 ...
 - IAR单片机启动文件与程序入口
			
最近在做TI单片机TM4C123GE6PZ的BootLoader,需要对启动文件做出修改,折腾了半宿,弄得事实而非. IAR默认提供了单片机的启动文件,cstart.s或者其他cstartxxx.s, ...
 - SDUST第十一次oj作业液晶显示问题
			
Problem H: 液晶显示 Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 3246 Solved: 1594[Submit][Status][Web ...
 - The 2018 ACM-ICPC China JiangSu Provincial Programming Contest    J. Set
			
Let's consider some math problems. JSZKC has a set A=A={1,2,...,N}. He defines a subset of A as 'Meo ...