[HAOI2008]移动玩具

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

广搜出最优解即可。。。

呆码:

#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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript --- Sortable一个拖拽的接口

最近项目里面要实现需要实现一个拖拽功能,自己实现很麻烦,就在网上找到了一个封装好的sortable函数,github(https://github.com/SortableJS/Sortable). 首先是依赖的引入:(也可以自己下载源代码导入,方式很多呢) <body><!-- Latest compiled and minified CSS -->…

个人发展战略6天课

第一课 冰山模型 【知道自己为什么会不喜欢一份工作】 衡量和一个岗位是否匹配、匹配程度如何 从上到下的要素 知识技能&#xff08;30%&#xff09;特定领域 - 可以后天学习的&#xff0c;显性的、容易看出来的 和工作的关系&#xff1a; 工作中有陌生的内容&#xff0c;每天…

《Web全栈工程师的自我修养》

1. 什么是全栈工程师 Full-Stack Engineer Facaebook只招全栈工程师&#xff1f; Web开发流程 产品经理-->交互设计-->视觉设计-->开发&#xff08;前端、后端&#xff09;-->测试-->发布 流水线的优势 “各司其职”的弊端 工程师职责不清导致效率低工程师缺乏主…

div设置overflow-scroll滚动之后,jq获取其子元素的offset.top出现问题。

先上个图&#xff1a; 布局很简单&#xff0c;左右超过屏幕的部分自行滚动。 1. html <div class"ce-container"><div class"ce-leftBox">//左边的内容</div><div class"ce-rightBox">//右边的内容 </div…

javascript --- 利用Sortable实现一个可视化公式编辑器

Sortable的依赖引入和简单使用参见:https://blog.csdn.net/piano9425/article/details/90437182 先简单的介绍一下可视化公式编辑器的功能(样式没有调,毕竟每个人的需求都不一样): 首先会有2个需要计算的(我称为操作数)A_XiangRaoZuWenSheng和AYKZQ_CS,以及两个操作符ADD(加法…

使用uni-app搭建微信小程序

0 问题待解决 import { } 与否为什么要封装对齐问题每次重启项目&#xff0c;sitemap就会消失动态修改标题失效图片问题多多 &#xff1a;高度自适应 改成image固定高度&#xff0c;mode&#xff1a;aspectFill微信小程序文档b站视频链接后端接口文档 一、知识点 uni-app 是…

HttpTomcat

本节内容&#xff1a; Http协议Tomcat服务器下面开始的一系列内容都是JavaEE的内容&#xff0c;主要的内容见下图。JavaEE主要是做服务器端开发。 JavaEE全部规范&#xff1a;有13门技术&#xff0c;主要做web开发的需要学习servlet和jsp。其他技术&#xff0c;像EJB、 JNDI、J…

python---线程与进程

一 线程 1.1 概述 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 Threading用于提供线程相关…

jquery常见操作分享

参考: https://www.cnblogs.com/eager/p/7133270.html

es 插件

类 若 实现NativeScriptFactory接口。A factory to create instances of either {link ExecutableScript} or {link SearchScript} 只是一个工厂类&#xff0c;仍需要 创建 上面二者之一。实际中 需 创建 类 继承 SearchScript接口的实现类AbstractSearchScript 的 子类 Abstra…

使用uni-app报错this.setData is not a function

一、报错 出现this.setData is not a function报错的绝大多数情况是&#xff0c;在回调时&#xff0c;this指向作用域为当前异步方法所在的对象&#xff0c;详见微信小程序异常处理——this.setData is not a function报错处理 二、排查原因 但我并没有在回调中使用this.set…

搭建SpringBoot服务器,在公司内网中使用

搭建SpringBoot服务器&#xff0c;在公司内网中使用。 学习了&#xff1a;https://blog.csdn.net/z3881006/article/details/78902231 就是一个程序&#xff0c;托管于github&#xff1b;https://github.com/spring-io/initializr 转载于:https://www.cnblogs.com/stono/p/9301…

javascrpt --- 使用jquery添加dom元素和Angular ng-repeat生成select性能比较

今天用两种方法实现了动态的给select添加option的功能. 第一种是用jquery. // html <select id"drag-pointList"></select> // js $(#drag-pointList).children(option).remove(); // 清空之前的option let list res.data.list ; // res是ajax请…

任何时候,写下一个类,一定要有三个函数

1、默认构造函数 2、拷贝构造函数 3、虚 析构函数转载于:https://www.cnblogs.com/buddho/p/8076165.html

【C语言及程序设计】项目2-15:模块化的简单银行系统设计

问题描述&#xff1a; https://edu.csdn.net/course/play/456/4808 // 银行系统.cpp: 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <stdlib.h> #pragma warning (disable: 4996)int PassTest(); void ibalance(); void withdraw(); void de…

jquery --- 使用when方法等待2个异步事件结束后执行某一个函数.

$.when(promise1, promise2) .done(function(args1, args2){console.log(args1 args2); }// 上述代码,等待promise1和promise2执行完,打印出(promise1和promise2)使用的参数 // 注:1.promise1和promise2是异步调用的函数,如ajax请求 // 2.如果执行promise1时用到了一个参数…

Android基础知识(一)

此篇文章开始逐步记录一些Android开发的一些相关知识。本文主要讲了一些adb的常用指令&#xff0c;Toast的常规使用&#xff0c;Intent的显式启动活动&#xff0c;按钮点击事件的四种处理方法&#xff0c;一些常见布局。 1. ADB常用指令 Android Debug Bridge adb android调试桥…

Android 6.0 动态权限申请

1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予&#xff0c;运行时应用不再需要询问用户。在 Android 6.0 或更高版本对权限进行了分类&#xff0c;对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这样就不需要在安装时被强迫同意某些权限。 2. …

el-input输入金额,保留两位小数

需求&#xff1a;“只允许输入金额保留两位小数”&#xff0c;有2种实现方法 方法一&#xff08;通过正则控制&#xff09;&#xff1a; html&#xff1a; <el-inputv-model"inputTable.amount"input"formatNum(form.amount, amount)" ></el-i…

jquery --- pip方法

我们先来看下面一个例子: var getPromise $.get(/query); getPromise.done(function(data) {var postPromise $.post(/search, data); }); // ...无法在此处给postPromise方法附加处理器// 上面先使用get方法读取url为query的数据,在完成后,再使用post方法将数据发送给另一个…