博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1195 Open the lock
阅读量:5341 次
发布时间:2019-06-15

本文共 2300 字,大约阅读时间需要 7 分钟。

调试了一段时间了,起点没有标记搜索过。大二的集训题目,现在才做。1Y。题目有点水。以前每次想做都是做不下去。今天K了

直接广搜就行了。将每个状态都标记,大概就10000个状态,以前总是不会分析,以为一定爆各种。。。

 

#include 
#include
using namespace std;int sn , en;char sts[6] , eds[6];int vis[10000],stp[10000];void init(){ memset(vis,0,sizeof(vis)); memset(stp,0,sizeof(stp));}int ex[4] , rl[10] , num[4];int Ex[4][4] , Rl[10][4];int tonum(int a,int b,int c,int d){ return a*1000+b*100+c*10+d;}void exch(int tmp){ num[0] = tmp/1000; num[1] = tmp%1000/100; num[2] = tmp%100/10; num[3] = tmp%10; int i=0; for(int j=0;j<3;j++){ for(int ti=0;ti<4;ti++) Ex[j][ti] = num[ti]; int t = Ex[j][i]; Ex[j][i] = Ex[j][i+1]; Ex[j][i+1] = t; //Swap(Ex[j][i],Ex[j][i+1]); ex[j] = tonum(Ex[j][0],Ex[j][1],Ex[j][2],Ex[j][3]); i++; }}inline int cor(int a) { if(a == 10) return 1; if(a == 0) return 9; return a;}void roll(int tmp){ num[0] = tmp/1000; num[1] = tmp%1000/100; num[2] = tmp%100/10; num[3] = tmp%10; for(int i=0;i<8;i++){ for(int k=0;k<4;k++) Rl[i][k] = num[k]; } for(int i=0;i<4;i++){ Rl[i*2][i] = cor(Rl[i*2][i] - 1); Rl[i*2+1][i] = cor(Rl[i*2+1][i] + 1); } for(int i=0;i<8;i++){ rl[i] = tonum(Rl[i][0],Rl[i][1],Rl[i][2],Rl[i][3]); //printf("%d ",rl[i]); }}int fa[10000];int bfs(){ init(); queue
q; q.push(sn); stp[sn] = 0; vis[sn] = 1; while(!q.empty()){ int tn = q.front();q.pop(); if(tn == en) return stp[tn]; exch(tn); for(int i=0;i<3;i++){ if(vis[ex[i]] == 0){ vis[ex[i]] = 1; q.push(ex[i]); stp[ex[i]] = stp[tn]+1; fa[ex[i]] = tn; } } roll(tn); for(int i=0;i<8;i++){ if(vis[rl[i]] == 0){ vis[rl[i]] = 1; q.push(rl[i]); stp[rl[i]] = stp[tn]+1; fa[rl[i]] = tn; } } } return 0;}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%s %s",sts,eds); sn = atoi(sts); en = atoi(eds); printf("%d\n" , bfs()); } return 0;}
View Code

 

可以递归找到变化路径。挺简单的。不多说了。

 

转载于:https://www.cnblogs.com/cton/p/3452674.html

你可能感兴趣的文章
触发器课程SQL Server 知识梳理九 触发器的使用
查看>>
信息浏览器从Android的浏览器中传递cookie数据到App中信息浏览器
查看>>
客户端连接linux虚拟机集群报错
查看>>
linux下部署一个JavaEE项目的简单步骤
查看>>
hash储存机制
查看>>
[Android学习系列16]Android把php输出的json加载到listview
查看>>
20145205 《信息安全系统设计基础》第14周学习总结
查看>>
XML中CDATA和#PCDATA的区别
查看>>
6)添加一个窗口的图标
查看>>
SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
查看>>
POJ - 1422 Air Raid 二分图最大匹配
查看>>
Road Map
查看>>
正则替换中的一个Bug
查看>>
HI3531uboot开机画面 分类: arm-linux-Ubunt...
查看>>
制作U盘启动CDLinux 分类: 生活百科 ...
查看>>
leetcode——Best Time to Buy and Sell Stock
查看>>
Android LinearLayout 的几个属性
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>