版权声明:本文为博主原创文章,未经博主允许不得转载。 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 = 10
- 计数,依次遍历 每个数字,记录比当前这个数字的前面比它大的数字的数字的个数记录为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;