题目:
输入一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上(如下图所示),使得正方体上三组相对的面上的4个顶点的和都相等。
思路:
相当于先得到a1、a2、a3、a4、a5、a6、a7和a8这8个数字的所有排列,然后判断有没有某一个的排列复合题目所给定的条件,即a1 + a2 + a3 + a4 == a5 + a6 + a7 + a8,a1 + a3 + a5 + a7 == a2 + a4 + a6 + a8,并且a1 + a2 + a5 + a6 == a3 + a4 + a7 + a8。
代码实现:
public static void permutation(int[] nums) {
if (nums == null || nums.length != 8) {
return;
}
boolean flag = permutation(nums, 0, nums.length - 1);
if (flag) {
System.out.println("ok");