小小手痒,写了一个立方体自动拼图软件。
需求:任意给出6块正方形图片,寻找能把它们作为一个立方体的6面拼接起来的方案。
拼接结果图示:
代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class CubeMatch {
// 返回整数数组is[]的全排列
public static List<int[]> permutation(List<int[]>list, int[] is) {
List<int[]> r = new ArrayList<int[]>();
if (list.size()==0)
r.add(Arrays.copyOfRange(is, 0, 1));
else
for (int i=0; i<list.size(); i++) {
int[] ois = list.get(i);
for (int j=0; j<=ois.length; j++) {
int[] nis = new int[ois.length+1];
for (int k=0; k<nis.length; k++)
nis[k] = k==j? is[0] : (k<j? ois[k]: ois[k-1]);
r.add(nis);
}
}
if (is.length==1) return r;
else {
int[] nis = Arrays.cop