题意:

给定1234/换行/5678,用下面几种方法变到制定的数
“A”:交换上下两行;
“B”:将最右边的一列插入最左边;
“C”:中央四格作顺时针旋转。

思路:

可以发现他们三种之间有变化规律,然后就直接可以变过去。所以就一直bfs,如果以前找到的数找到过了,就不用这个节点了,在如何知道这个数有没有被找过就可以用hash来快速查找。

constmaxn=1000007;rule:array [1..3,1..8] of longint=((8,7,6,5,4,3,2,1),(4,1,2,3,6,7,8,5),(1,7,2,4,5,3,6,8));
varstate:array [0..maxn] of string[8];i,j,n,m,ans:longint;f,w,hash:array [1..maxn] of longint;procedure init;
vari,j:longint;s:string;
begins:='';for i:=1 to 8 dobeginread(j);s:=s+chr(48+ord(j));end;state[0]:=s;
end;function find(s:string):boolean;
varx,i,j:longint;
beginval(s,x);i:=x mod maxn;while (hash[i]<>x) and (hash[i]<>0) do i:=i mod maxn+1;if hash[i]=x then find:=trueelse find:=false;hash[i]:=x;
end;procedure print(x:longint);
vari,j:longint;
beginif f[x]<>0 thenbegininc(ans);print(f[x]);end;if f[x]=0 then writeln(ans) elseif w[x]=1 then write('A')else if w[x]=2 then write('B')else if w[x]=3 then write('C');
end;procedure bfs;
vari,j,tail,head:longint;flag:boolean;
beginstate[1]:='12345678';hash[12345678 mod maxn]:=12345678;head:=0; tail:=1;if state[1]=state[0] then begin print(1); exit; end;repeatinc(head);for i:=1 to 3 dobegininc(tail);f[tail]:=head;w[tail]:=i;for j:=1 to 8 dostate[tail]:=state[tail]+state[head,rule[i,j]];if find(state[tail])  thenbeginstate[tail]:='';dec(tail);end;if state[tail]=state[0] thenbeginprint(tail);exit;end;end;until tail<head;
end;begininit;bfs;
end.

USACO 3.2 Magic Squares 魔板 (BFS-HASH)相关推荐

  1. Magic Squares 魔板 (BFS+HASH)

    Description 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8 ...

  2. USACO 3.2 Magic Squares 魔板

    题目大意: 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8 ...

  3. [USACO3.2]Magic Squares 魔板

    题目大意 给出一个2*4的矩阵,有3种基本操作 A B C 交换上下两行 将最右边的一列插入最左边 中央四格作顺时针旋转 基本状态: 1 2 3 4 8 7 6 5 给定一个目标状态,求最少的基本操作 ...

  4. hdu.1430.魔板(bfs + 康托展开)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. 魔板 Magic Squares(bfs优化)

    [USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...

  6. [USACO3.2]魔板 Magic Squares

    [USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题 ...

  7. 洛谷P2730 [IOI]魔板 Magic Squares

    题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜 ...

  8. P2730 魔板 Magic Squares

    不看题解肯定不会系列... 这道题可以用Cantor展开解决. Cantor展开可以求出一个数组是在全排列中的第几个. 具体怎么操作自己百度. Cantor展开的公式是:\(a[1] * (n - 1 ...

  9. HDU 1430 魔板(康托展开+BFS+预处理)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

最新文章

  1. Android -- TextView与EditText 同步显示
  2. 海量存储系列下--转载,值得一读
  3. win linux 装系统 通过 u盘
  4. 第8部分 管理磁盘存储
  5. java嵌套类与内部类
  6. 支持中国西安申办ICCV2025,见证计算机视觉蓬勃发展的20年 | Vote for ICCV2025 Xi'an China...
  7. Java 学习 day09
  8. 利用access创建数据字典_VBA数组与字典解决方案54讲:利用字典和数组提取数据并按行回填...
  9. harmonyos 2.0开机动画壁纸,华为鸿蒙OS 2.0开机动画
  10. Blender物理引擎
  11. VGA显示原理、时序标准及相关参数
  12. 关键字Wait Until Keyword Succeeds
  13. 5G 核心网 Quality of Service Model (QoS Model)
  14. ASU计算机科学专业大学排名,2013年U.S.News美国大学排名--计算机科学专业研究生排名...
  15. World中利用宏命令批量删除页眉和页脚
  16. android开机动画 制作工具,开机动画包制作(bootanimation)
  17. 如何使用CAD软件来修改表格中CAD字体颜色?
  18. 纯真ip php,PHP利用纯真数据库获取访客IP物理地址
  19. 什么是服务器托管?服务器托管和虚拟主机的区别
  20. 如何解决MacOS Big Sur,打印错误:ERROR invalidcontent?

热门文章

  1. 最好的在线PDF转换工具服务
  2. JavaScript - JS验证邮箱 ××× VISA 卡输入是否正确|正则表达式
  3. 为什么要学数学?因为它真的没用啊!
  4. 云服务器怎么恢复初始设置
  5. paypal php 返回_接入 paypal PHP-sdk 支付 / 回调 / 退款全流程
  6. python中判断生肖和星座哪个准_十二生肖PK十二星座,到底哪个更准?
  7. obj-c中Autorelease、属相定义Property、对象的操作
  8. 教授专栏37 | 黄昊: 发展虚拟资产, 须监管教育并行
  9. linux 进程间界面嵌套,WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)...
  10. 团队对员工工作积极性的影响