• 滑块拼图


     

    这个图相信大家都不陌生,没错,今天我们要探讨的就是滑块拼图这个游戏的一些性质

    这里先放一个滑块拼图的定义:

    翻译过来大概是: 一个 n×m 的滑块拼图指的是 把 n×m-1 个滑块放在一个 m 行 n 列的网格里玩的游戏

    接下来,我们一起研究一下以下这些问题:

    ⒈对于一个 n×m 的滑块拼图,一共有多少种排列组合方式?  (n×m)!

    理由:把空格也当成一个滑块,一共有 n×m 个互不相同的滑块,共种排列方法

    ⒉所有的组合都是合法的吗?(合法指能够还原到顺序排列状态)不是

    理由:举个例子就知道了

        

    如上图,不管怎么移动,2 和 3的位置都无法互换

    3.怎么判断一种组合是否合法?

    对于 一个 n×n 的网格,先将表格铺平:

    计算 N=逆序数对之和(不算空格),e=空格所在的行数

    若n为奇数,当且仅当 N为偶数 时合法

    若n为偶数,当且仅当 N+e为偶数 时合法

    理由:这个比较复杂,我们分三个命题证明一下

    命题1:当 n为奇数时,移动后 N奇偶性不变

    首先,某一滑块左右移动,不影响滑块相对顺序,N不变

    其次,某一滑块上下移动,N不改变奇偶性,为什么呢?

    我们来看张图:

    一滑块上下移动一次,在铺平后的序列上相当于跨过了 (n-1) 个数

    原本,这 (n-1) 个数每个都和此滑块构成了一个顺序对或逆序对,不妨设其中顺序对有 a 个,逆序对有 b 个 (a+b=n,a>=0,b>=0)

    移动后,顺序对变为逆序对,逆序对变为顺序对,即 顺序对有 b 个,逆序对有 a 个

    因为 n 为奇数,所以 (n-1) 为偶数

    所以 a,b 均为偶数 或 a,b 均为奇数

    互换后,这 (n-1) 个数对中逆序对奇偶性不变

    又因为此滑块的上下移动不对其它数对造成影响 ,所以 N 奇偶性不变

    命题2:当 n为偶数时,移动后 N+e 奇偶性不变

    还是,某一滑块左右移动均不对 N,e 造成影响,N+e 不变

    然后,我们再来看一下某一滑块上下移动的图:

    这次,n 为偶数,所以 (n-1) 为奇数

    所以 a,b 一奇一偶

    互换后,这 (n-1) 个数对中逆序对奇偶性改变

    又因为此滑块的上下移动不对其它数对造成影响 ,所以 N 奇偶性改变

    但因为此滑块上下移动时,e 的奇偶性也必然改变,所以 N+e 奇偶性不变

    命题3:滑块顺序排列时,滑块拼图满足上述判定条件

    当 n 为奇数且滑块顺序排列时,N=0,为偶数

    当 n 为偶数且滑块顺序排列时,N=0,e=n,N+e=n,为偶数

    又因为每步移动均符合命题1和命题2,所以判定成立

  • 相关阅读:
    改变Prompt默认路径,Change Default Visual Studio Command Prompt Location
    msbuild,Build failed with Error MSB3073 exited with code 1
    the filename directory name or volume label syntax is incorrect
    常用sql语句记录
    EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类
    一种在MVC3框架里面设置模板页的方法,不使用_ViewStart
    Java内存模型
    Effective Java(1)-创建和销毁对象
    WireShark 查看UDP码流的丢包率
    拖延心理学读后感
  • 原文地址:https://www.cnblogs.com/HarryPotter-fan/p/12197138.html
Copyright © 2020-2023  润新知