restorableconfuse.java

来自「Java版拼图游戏」· Java 代码 · 共 35 行

JAVA
35
字号
/*
 * @(#)RestorableConfuse.java 1.0 03/08/22
 * Copyright 2003 Entao Zhang, All rights reserved.
 */

/**
 * 拼图一般方式的打乱算法(存在路径起始点).此算法为已进行优化的可逆算法.
 */
public class RestorableConfuse extends ConfuseArray {

	public int runConfuse(int[] grids, int x, int y){
		int arrayLength=x*y;
		if (arrayLength < 2 || arrayLength!=grids.length){
			throw new ArrayIndexOutOfBoundsException("SrcArray very small or srcArray's length not equals x*y!!!");
		}

		int up=x, right=1;
		int ir=0, swap;
		int temp;
		swap=r.nextInt(arrayLength);
		for (int i=0; i<10000; i++){
			if (swap%x==(x-1)) 	right=-1;
			if (swap%x==0) 		right=1;
			if (swap/x==(y-1))	up=-x;
			if (swap/x==0) 		up=x;
			ir = r.nextBoolean() ? up : right;
			ir += swap;
			temp = grids[swap];
			grids[swap] = grids[ir];
			grids[ir] = temp;
			swap = ir;
		}
		return swap;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?