深圳整站全网推广微信公众号登录官方入口

张小明 2026/1/9 16:08:28
深圳整站全网推广,微信公众号登录官方入口,wordpress有哪些网站,公司和公司网站的关系【题目链接】 ybt 1453#xff1a;移动玩具 洛谷 P4289 [HAOI2008] 移动玩具 【题目考点】 1. 广搜 2. 双向广搜 3. map map存储键值对 由于map底层是红黑树#xff08;一种二叉搜索树#xff09;#xff0c;其键的类型必须可以比较#xff0c;即键的类型支持…【题目链接】ybt 1453移动玩具洛谷 P4289 [HAOI2008] 移动玩具【题目考点】1. 广搜2. 双向广搜3. mapmap存储键值对由于map底层是红黑树一种二叉搜索树其键的类型必须可以比较即键的类型支持小于号运算符。【解题思路】解法1广搜本题以4*4二维数组作为状态状态中包含了移动玩具的步数。输入起始和目标状态。设队列保存状态将起始状态入队。每次循环出队一个状态u uu为当前状态。从当前状态u uu出发遍历二维数组中的每个位置。如果当前位置是1那么尝试将1向其上下左右四个方向移动其目标移动位置必须在二维数组范围内且目标位置为0。如果可以移动那么将当前位置和目标位置的值交换完成移动得到新的状态t tt。对于新的状态t tt先使用vis判断该状态是否出现过。如果该状态没有出现过则记录到达该状态经过的步数dis将t tt状态入队。而后进行下一次循环。当出队的状态为目标状态时返回到达目标状态的步数即为本题的结果。广搜过程中需要判断某一状态是否已经出现过。本题的状态为一个4*4二维数组因此需要记录一个4*4二维数组是否出现过。设Node类型保存状态其中包含一个char类型的二维数组。需要使用一组映射记录状态是否出现过。方法1键类型Node值类型bool由于map的键的类型必须可以比较即实现小于号运算符。我们需要对Node类型重载小于号运算符使得两个Node类型对象可以使用小于号运算符进行比较。其声明格式为booloperator(constNodeb)const{//...}注意函数中的两个const必须写这是map类的要求。此处可以自己定义一种比较规则即给定两个二维数组你可以根据该规则说出哪个更大哪个更小即可。以下给出一个可行的比较规则。可以按顺序依次比较两个状态的二维数组的每个对应位置的值。如果第一个数组中取到的值小于第二个数组中取到的值返回真。如果第一个数组中取到的值大于于第二个数组中取到的值返回假。如果第一个数组和第二个数组完全相同也返回假。方法2键类型string值类型boolstring类已经重载了小于号运算符可以根据字典序规则比较两个字符串。在Node类型中将二维数组转为string。只需要遍历二维数组将取到的字符连接为一个字符串即可。解法2双向广搜可以从起始状态和目标状态同时出发进行广搜首先将起始和目标状态同时入队。vis为一个map记录一个状态来源即该状态是从哪个状态扩展得到的值为0表示该状态还没出现过。值为1表示该状态是从起始状态扩展得到的。值为2表示该状态是从最终状态扩展得到的。该方法必须设一个独立的名为dis的map来记录到达一个状态的步数无法把dis放在Node类中。搜索过程和广搜类似从当前状态u uu扩展得到一个新的状态t tt时如果t tt状态未出现过那么将t tt状态的来源vis[t]设为和当前u uu状态的来源vis[u]相同。如果t tt状态已出现过且t tt状态的来源vis[t]和当前u uu状态的来源vis[u]不同说明在解空间树上从起始状态出发的路径和从目标状态出发的路径相遇。从一个来源到u uu状态的步数为dis[u]从另一个来源到t tt状态的步数为dis[t]从起始状态到目标状态的总步数为dis[u]dis[t]1。将该值返回即为问题的结果。记录状态的方法可以使用上述方法1在Node中重载小于号运算符而后将Node作为map的键。或使用方法2将状态转为string而后作为map的键。【题解代码】解法1广搜Node中重载小于号运算符#includebits/stdc.husingnamespacestd;structNode{chara[5][5];intdis;//到达该状态的步数booloperator(constNodeb)const{for(inti1;i4;i)for(intj1;j4;j)if(a[i][j]!b.a[i][j])returna[i][j]b.a[i][j];returnfalse;}booloperator(constNodeb)const{for(inti1;i4;i)for(intj1;j4;j)if(a[i][j]!b.a[i][j])returnfalse;returntrue;//两数组相同}};Node st,ed;mapNode,boolvis;intdir[4][2]{{0,1},{0,-1},{1,0},{-1,0}};intbfs(){queueNodeque;que.push(st);vis[st]true;while(!que.empty()){Node uque.front(),tu;//t临时变量que.pop();if(ued)//使用returnu.dis;for(inti1;i4;i)for(intj1;j4;j)if(u.a[i][j]1)//(i,j)位置是玩具for(intk0;k4;k){intxidir[k][0],yjdir[k][1];//(x,y)移动的目标位置if(x1x4y1y4u.a[x][y]0){swap(t.a[i][j],t.a[x][y]);if(!vis[t]){vis[t]true;t.disu.dis1;que.push(t);}swap(t.a[i][j],t.a[x][y]);//将t还原为和u相同}}}return-1;//如果无解返回-1尽管题目没有要求}intmain(){for(inti1;i4;i)for(intj1;j4;j)cinst.a[i][j];for(inti1;i4;i)for(intj1;j4;j)cined.a[i][j];coutbfs();return0;}解法2双向广搜使用string表示状态#includebits/stdc.husingnamespacestd;structNode{chara[5][5];stringstr(){string s;for(inti1;i4;i)for(intj1;j4;j)s.push_back(a[i][j]);returns;}};Node st,ed;mapstring,intvis,dis;intdir[4][2]{{0,1},{0,-1},{1,0},{-1,0}};intbfs(){queueNodeque;que.push(st);que.push(ed);vis[st.str()]1,vis[ed.str()]2;if(vis.size()1)return0;//起点终点相同while(!que.empty()){Node uque.front(),tu;//t临时变量que.pop();for(inti1;i4;i)for(intj1;j4;j)if(u.a[i][j]1)//(i,j)位置是玩具for(intk0;k4;k){intxidir[k][0],yjdir[k][1];//(x,y)移动的目标位置if(x1x4y1y4u.a[x][y]0){swap(t.a[i][j],t.a[x][y]);if(vis[t.str()]0){vis[t.str()]vis[u.str()];dis[t.str()]dis[u.str()]1;que.push(t);}elseif(vis[t.str()]!vis[u.str()])//相遇returndis[t.str()]dis[u.str()]1;swap(t.a[i][j],t.a[x][y]);}}}}intmain(){for(inti1;i4;i)for(intj1;j4;j)cinst.a[i][j];for(inti1;i4;i)for(intj1;j4;j)cined.a[i][j];coutbfs();return0;}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

河南住房和城乡建设局网站ps联盟网站

终极Windows性能剖析工具:Very Sleepy完全实战指南 【免费下载链接】verysleepy Very Sleepy, a sampling CPU profiler for Windows 项目地址: https://gitcode.com/gh_mirrors/ve/verysleepy Very Sleepy是一款专为Windows平台设计的抽样CPU剖析器&#xf…

张小明 2026/1/8 23:29:39 网站建设

拓者设计吧官方网站兼职做放单主持那个网站好

Spring Boot基于微信小程序的研友交流互助平台是一款专为考研学子设计的互动交流工具,它充分利用了Spring Boot的高效性能和微信小程序的便捷性,为研友们提供了一个稳定、高效、安全的交流互助空间。以下是对该平台的详细介绍: 一、技术背景…

张小明 2026/1/9 0:08:05 网站建设

做网站建设的方案关注公众号在哪里查找

三极管工作原理及详解:从零开始掌握BJT的底层逻辑你有没有过这样的经历?看到电路图中的三极管,知道它能放大信号、也能当开关用,可一旦问“它到底是怎么工作的?为什么基极一个小电流就能控制大电流?”&…

张小明 2026/1/9 0:39:14 网站建设

冠县网站开发企业网站建设都能做哪些工作

软件安装与硬件设置全攻略 1. Xmahjongg 游戏安装与运行 1.1 传统安装方法 传统的 Xmahjongg 安装方法是在执行 ./configure 和 make 步骤的终端窗口中,输入 sudo make install 并回车,之后编译的文件会被安装到系统的各个位置。接着可以使用 make clean 命令清理…

张小明 2026/1/9 1:25:59 网站建设

网站建设培训厦门网站运营与维护的方法

3个步骤轻松搞定Access数据库跨平台迁移 【免费下载链接】mdbtools 项目地址: https://gitcode.com/gh_mirrors/mdb/mdbtools 还在为Windows环境下的Access数据库文件无法在Linux或macOS系统中使用而烦恼吗?MDBTools正是解决这一痛点的开源利器。这套工具集…

张小明 2026/1/9 4:02:32 网站建设

wordpress 4.9 站群太原seo按天计费

在数字内容创作领域,3D资产制作一直是技术门槛最高、流程最复杂的环节之一。传统的工作流涉及十余个专业软件的交替使用,建模师需要花费数周时间在概念设计、高模雕刻、低模拓扑、UV展开、纹理绘制和骨骼绑定之间反复迭代。如今,AI技术的深度…

张小明 2026/1/9 5:28:38 网站建设