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;
}
转载于:https://www.cnblogs.com/Kv-Stalin/p/9436920.html
P2730 魔板 Magic Squares (搜索)相关推荐
- P2730 魔板 Magic Squares
不看题解肯定不会系列... 这道题可以用Cantor展开解决. Cantor展开可以求出一个数组是在全排列中的第几个. 具体怎么操作自己百度. Cantor展开的公式是:\(a[1] * (n - 1 ...
- 魔板 Magic Squares(bfs优化)
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...
- [USACO3.2]魔板 Magic Squares
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...
- 洛谷P2730 [IOI]魔板 Magic Squares
题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜 ...
- 【题解】Luogu P2730 魔板
蒟蒻的第一道蓝题--好像也没有蓝的程度 一篇无STL的超弱题解(入门写法无误了QAQ 传送门 很经典的一道BFS 这是初始状态. 操作A 操作B 操作C 思路1 不使用cantor展开的情况 1. 对 ...
- USACO 3.2 Magic Squares 魔板
题目大意: 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8 ...
- Magic Squares 魔板 (BFS+HASH)
Description 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8 ...
- 魔板(洛谷-P2730)
题目描述 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8个 ...
- HDU 1430 魔板(康托展开+BFS+预处理)
魔板 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
最新文章
- python登录网页账号密码_python03网页用户名密码登录
- [unreal4入门系列之七] UE4中的Actor类和Pawn类
- Linux yum 安装MariaDB
- 用python爬虫爬取无水印图片_使用python 爬虫,爬取图片
- 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
- 超炫酷的HTML5视频播放器 支持手机移动页面
- 水晶报表 动态控制图片显示 Changing pictures dynamically in Crystal Report
- Android第十七课 Jni string空串跨模块使用崩溃注意事项
- 【干货】火山视频去水印下载使用介绍
- 服务器443端口响应代码,使用443端口远程服务器
- XShell远程登录华为云服务器
- LabVIEW如何减少下一代测试系统中的硬件过时6
- 高职单招计算机基础知识题,高职单招计算机基础练习题
- 在windows终端中进行复制粘贴的方法
- 怎么辨别一个公司是不是外包?
- 帝国竞争算法(ICA)详解与python 实现
- 计算机组成原理设计,计算机组成原理课程设计
- 0x80072f8f-0x20000错误解决办法
- BMZCTF:掘地三尺
- java“/”除号意思是:取整 并不会出现小数
热门文章
- 图的割点(边表集实现)
- asp实现批量录入数据
- Javascript事件委托
- ubuntu 设置开机启动与关闭开机启动(适用于部分linux系统)
- 我的代码和注释都写的像坨屎,那又怎么样?
- MYSQL:MYSQL索引为什么选择B+树?
- 03.native方法(JNI)
- 12:MYSQL 使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度)
- java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
- java keeplive,java http长链接(keep-alive)导致的问题