Android之基于OpenCV的Puzzle拼图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/I_do_can/article/details/77481906

PUZZlE 拼图 GAME

目前支持三个难度,入门:puzzle8, 中级:puzzle15, 高级:puzzle24
这里写图片描述
试玩APK:试玩APK
源代码:源码
改编自OpenCV的 puzzle15 demo

先说一说算法方面

  • 判断puzzle 是可解的 puzzle8 is solvable
    • 可解 inversions = 10

      1 8 2
      <ul><li>4 3
      7 6 5
    • 无解 inversions = 11

      8 1 2</li>
      <li>4 3
      7 6 5
  • 计数,依次遍历 每个数字,记录比当前这个数字的前面比它大的数字的数字的个数记录为inversions,如果inversions % 2 == 0 ,就是可解的,这是因为移动是对称的,如果inversions是偶数,经过若干次移动,重新计算的inversions还是偶数
        /**
         * 计算 每个数的前面比它大的数的个数
         */
        for (int i = 1; i < GRID_AREA; i++) {
            if(mIndexes[i] == GRID_EMPTY_INDEX) {
                continue;
            }
            for (int j = 0; j < i; j++) {
                if(mIndexes[j] == GRID_EMPTY_INDEX) {
                    continue;
                }
                if (mIndexes[j] > mIndexes[i])
                    sum++;
            }
        }
        return sum % 2 == 0;

猜你喜欢

转载自blog.csdn.net/I_do_can/article/details/77481906