立方体自动拼图软件(代码、注释、输出效果)

小小手痒,写了一个立方体自动拼图软件。

需求:任意给出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.copyOfRange(is, 1, is.length);
			return permutation(r, nis);
		}
	}

	// 拼图匹配用的方法
	public static Arris[] put(int[] permu, int[] edges) {
		Arris[] as = new Arris[24];
		for (int i=0; i<4; i++) {
			as[i*2] = new Arris(0,i);
			as[i*2+1]= new Arris(permu[i], edges[i]);
			as[8+i*2]= new Arris(permu[i],edgePlus(edges[i],1));
			as[8+i*2+1]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值