这又是一道神奇的搜索题。。。只要记录每种状态。。。然后暴力判断这种状态往后一步的情况。。。

广搜出最优解即可。。。

呆码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;int dx[5]={0,0,1,0,-1};
int dy[5]={0,1,0,-1,0};
int dis[100010];
char st[5];
bool use[100010];struct asd{int a[5][5],num;int sum() {int tot=0;for(int i=1;i<=4;i++)for(int j=1;j<=4;j++)tot+=(a[i][j]<<4*(i-1)+j-1);return tot;}void read() {for(int i=1;i<=4;i++){scanf("%s",st);for(int j=1;j<=4;j++)a[i][j]=(st[j-1]=='1' ? 1 : 0);}num=sum();}
}s,t;inline int BFS()
{memset(dis,50,sizeof(dis));queue <asd> q;q.push(s); dis[s.num]=0; use[s.num]=1;while(!q.empty()){asd now=q.front(); q.pop();for(int x=1;x<=4;x++)for(int y=1;y<=4;y++)if(now.a[x][y])for(int i=1;i<=4;i++){int xx=x+dx[i];int yy=y+dy[i];if(xx>=1 && xx<=4 && yy>=1 && yy<=4 && !now.a[xx][yy]){swap(now.a[xx][yy],now.a[x][y]);asd u=now; u.num=u.sum();swap(now.a[xx][yy],now.a[x][y]);if(!use[u.num]){dis[u.num]=dis[now.num]+1;if(u.num==t.num) return dis[t.num];q.push(u); use[u.num]=1;}}}}return dis[t.num];
}int main()
{s.read(); t.read();if(s.num==t.num) printf("0\n");else printf("%d\n",BFS());
}

代码

转载于:https://www.cnblogs.com/zzzyc/p/9299741.html

[HAOI2008]移动玩具相关推荐

  1. bzoj 1054: [HAOI2008]移动玩具.cpp

    1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2260  Solved: 1254 [Submit][St ...

  2. [bzoj1054][HAOI2008]移动玩具

    题意:在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具 ...

  3. BZOJ 1054: [HAOI2008]移动玩具(bfs)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1054 题解: 将每一种状态十六位压成二进制,然后bfs..不解释.. p.s.注意特判初始 ...

  4. python中关键字参数含义_python中接受任意关键字的参数

    1.*args args是非关键字参数,可以理解为形参,为了方便记忆我理解它是arguments的缩写. 2.*kwargs kwargs是键值对参数,为了方便记忆我理解它是key word argu ...

  5. 提高篇 第一部分 基础算法 第4章 广搜的优化技巧

    LOJ 一本通一句话题解系列: - ~victorique~ - 博客园 LOJ 一本通一句话题解系列: - ~victorique~ - 博客园 「一本通 1.4 例 1」电路维修 电路维修 (广搜 ...

  6. 语法入门*算法入门题单

    作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...

  7. 【新手上路】语法入门算法入门题单

    作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...

  8. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  9. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

最新文章

  1. Latex注释快捷键
  2. 基于Leaflet实现路径轨迹回放功能
  3. MFC之CAsyncSocket详解
  4. PHP操作MongoDB GridFS 存储文件
  5. ArcGIS API for JS4.7加载FeatureLayer,点击弹出信息并高亮显示
  6. x的奇幻之旅 (史蒂夫·斯托加茨 著)
  7. .net 按行切割数组
  8. JAVA 线程池的分析和使用
  9. 华为太极magisk安装教程_小米手机官方REC装面具(magisk)教程
  10. Adobe Photoshop 2021 22.1.1.138中文版(win/mac)
  11. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
  12. Android自定义view之网易云推荐歌单界面
  13. css3地球自转,CSS3 月亮围绕地球转动的3D动画
  14. 《漩涡中的中国首富李彦宏》
  15. 前端一面又挂了?学习总结经验,别再让面试止步一面!
  16. MyZip--专业mac压缩软件
  17. A Novel Task Allocation for Maximizing Reliability Considering Fault-Tolerant in VANET ... 学习笔记
  18. twig模板引擎使用php,Twig模板引擎用法入门教程
  19. 无人车智能挑战赛自主巡航篇
  20. 全球美容手术数量持续上升,隆胸、吸脂、眼睑手术、腹部整形和鼻整形占前五...

热门文章

  1. (Z)标准电阻值的来历及色环电阻值定义
  2. SUSE Linux 维护笔记二
  3. 删掉被2345篡改的IE起始页
  4. ECMAScript5 严格模式,JSON,及其它
  5. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试再次测试
  6. 线性序列机与串行接口ADC驱动设计与验证
  7. 模拟集成电路的经典教材
  8. 假设以带头结点的循环链表表示队列_关于反转链表,看这一篇就够了!
  9. pid调节软件_非常实用的PID算法和PID控制原理
  10. java 验证码_java学习之web基础(6):使用Response的输出流在页面输出验证码