1.设计题目
小明被绑架到X星球的巫师W那里。当时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7),他命令小明从一组数据中分别取数与另一组中的数配对,共配成4对 (组中的每个数必被用到)。
小明的配法是:{(8,7),(5,6),(3,4),(2,1)}
巫师凝视片刻,突然说这个配法太棒了!
因为:
每个配对中的数字组成两位数,求平方和,无论正倒,居然相等:
87^2 + 56^2 + 34^2 + 21^2 = 12302
78^2 + 65^2 + 43^2 + 12^2 = 12302
小明想了想说:“这有什么奇怪呢,我们地球人都知道,随便配配也可以啊!”
{(8,6),(5,4),(3,1),(2,7)}
86^2 + 54^2 + 31^2 + 27^2 = 12002
68^2 + 45^2 + 13^2 + 72^2 = 12002
巫师顿时凌乱了。。。。。
请你计算一下,包括上边给出的两种配法,巫师的两组数据一共有多少种配对方案具有该特征。
配对方案计数时,不考虑配对的出现次序。
就是说:{(8,7),(5,6),(3,4),(2,1)}与{(5,6),(8,7),(3,4),(2,1)}是同一种方案。
2.问题描述
将两个数组中任意数据两两组合且不可以重复,组合后的四对数,他们的正序平方和与倒序平方和相等,求符合条件上诉条件的组合数量。
3.问题分析
在两组数组中,将数组{1,4,6,7}排列组合,与另一组数组{2,3,5,8}两两组合,且为不相同的四对数,然后计算四对数的正序与逆序的平方和,是否相等,将符合条件的组合计数,输出答案。
4.代码实现
public class Design_01随意组合 {
static int[] arr1 = {2,3,5,8}; //指定其中一组数组为原本其中任意一组的数据;
static int[][] arr2 = {
{1,4,6,7},{1,4,7,6},{1,6,4,7},{1,6,7,4},{1,7,4,6},{1,7,6,4},
{4,1,6,7},{4,1,7,6},{4,6,1,7},{4,6,7,1},{4,7,1,6},{4,7,6,1},
{6,1,4,7},{6,1,7,4},{6,4,1,7},{6,4,7,1},{6,7,1,4},{6,7,4,1},
{7,1,4,6},{7,1,6,4},{7,4,1,6},{7,4,6,1},{7,6,1,4},{7,6,4,1}
}; //指定另外一组数组为另外一组数据的全排列;
public static void main(String[] args){
int s = 0,sum1 = 0,sum2 = 0; //s变量用来记录符合要求的组合数;
int arr3[] = new int[4];
int arr4[] = new int[4];
for(int i = 0;i<= arr2.length-1;i++){
for(int j = 0;j<= arr1.length-1;j++){
arr3[j] = arr1[j]*10 + arr2[i][j];
arr4[j] = arr1[j] + arr2[i][j]*10;
sum1 += arr3[j]*arr3[j];
sum2 += arr4[j]*arr4[j];
}
if(sum1 == sum2) {
s++;
//System.out.print("//这是第"+s+"种组合,这组组合为:"+arr3[0]+" * "+arr3[0]+" + "+ arr3[1]+" * "+arr3[1]+" + "+
//arr3[2]+" * "+arr3[2]+" + "+ arr3[3]+" * "+arr3[3]+"="+sum1+" ");
//System.out.println(arr4[0]+" * "+arr4[0]+" + "+ arr4[1]+" * "+arr4[1]+" + "+
//arr4[2]+" * "+arr4[2]+" + "+ arr4[3]+" * "+arr4[3]+"="+sum2);
//System.out.println("//这是第"+s+"种组合,这种组合的和为"+sum1);
}
sum1 = 0;
sum2 = 0;
}
System.out.println("总共有"+s+"种组合");
}
}
5.运行结果:
这是第1种组合,这组组合为:21 * 21 + 34 * 34 + 56 * 56 + 87 * 87=12302 12 * 12 + 43 * 43 + 65 * 65 + 78 * 78=12302
这是第1种组合,这种组合的和为12302
这是第2种组合,这组组合为:21 * 21 + 34 * 34 + 57 * 57 + 86 * 86=12242 12 * 12 + 43 * 43 + 75 * 75 + 68 * 68=12242
这是第2种组合,这种组合的和为12242
这是第3种组合,这组组合为:21 * 21 + 36 * 36 + 54 * 54 + 87 * 87=12222 12 * 12 + 63 * 63 + 45 * 45 + 78 * 78=12222
这是第3种组合,这种组合的和为12222
这是第4种组合,这组组合为:21 * 21 + 36 * 36 + 57 * 57 + 84 * 84=12042 12 * 12 + 63 * 63 + 75 * 75 + 48 * 48=12042
这是第4种组合,这种组合的和为12042
这是第5种组合,这组组合为:21 * 21 + 37 * 37 + 54 * 54 + 86 * 86=12122 12 * 12 + 73 * 73 + 45 * 45 + 68 * 68=12122
这是第5种组合,这种组合的和为12122
这是第6种组合,这组组合为:21 * 21 + 37 * 37 + 56 * 56 + 84 * 84=12002 12 * 12 + 73 * 73 + 65 * 65 + 48 * 48=12002
这是第6种组合,这种组合的和为12002
这是第7种组合,这组组合为:24 * 24 + 31 * 31 + 56 * 56 + 87 * 87=12242 42 * 42 + 13 * 13 + 65 * 65 + 78 * 78=12242
这是第7种组合,这种组合的和为12242
这是第8种组合,这组组合为:24 * 24 + 31 * 31 + 57 * 57 + 86 * 86=12182 42 * 42 + 13 * 13 + 75 * 75 + 68 * 68=12182
这是第8种组合,这种组合的和为12182
这是第9种组合,这组组合为:24 * 24 + 36 * 36 + 51 * 51 + 87 * 87=12042 42 * 42 + 63 * 63 + 15 * 15 + 78 * 78=12042
这是第9种组合,这种组合的和为12042
这是第10种组合,这组组合为:24 * 24 + 36 * 36 + 57 * 57 + 81 * 81=11682 42 * 42 + 63 * 63 + 75 * 75 + 18 * 18=11682
这是第10种组合,这种组合的和为11682
这是第11种组合,这组组合为:24 * 24 + 37 * 37 + 51 * 51 + 86 * 86=11942 42 * 42 + 73 * 73 + 15 * 15 + 68 * 68=11942
这是第11种组合,这种组合的和为11942
这是第12种组合,这组组合为:24 * 24 + 37 * 37 + 56 * 56 + 81 * 81=11642 42 * 42 + 73 * 73 + 65 * 65 + 18 * 18=11642
这是第12种组合,这种组合的和为11642
这是第13种组合,这组组合为:26 * 26 + 31 * 31 + 54 * 54 + 87 * 87=12122 62 * 62 + 13 * 13 + 45 * 45 + 78 * 78=12122
这是第13种组合,这种组合的和为12122
这是第14种组合,这组组合为:26 * 26 + 31 * 31 + 57 * 57 + 84 * 84=11942 62 * 62 + 13 * 13 + 75 * 75 + 48 * 48=11942
这是第14种组合,这种组合的和为11942
这是第15种组合,这组组合为:26 * 26 + 34 * 34 + 51 * 51 + 87 * 87=12002 62 * 62 + 43 * 43 + 15 * 15 + 78 * 78=12002
这是第15种组合,这种组合的和为12002
这是第16种组合,这组组合为:26 * 26 + 34 * 34 + 57 * 57 + 81 * 81=11642 62 * 62 + 43 * 43 + 75 * 75 + 18 * 18=11642
这是第16种组合,这种组合的和为11642
这是第17种组合,这组组合为:26 * 26 + 37 * 37 + 51 * 51 + 84 * 84=11702 62 * 62 + 73 * 73 + 15 * 15 + 48 * 48=11702
这是第17种组合,这种组合的和为11702
这是第18种组合,这组组合为:26 * 26 + 37 * 37 + 54 * 54 + 81 * 81=11522 62 * 62 + 73 * 73 + 45 * 45 + 18 * 18=11522
这是第18种组合,这种组合的和为11522
这是第19种组合,这组组合为:27 * 27 + 31 * 31 + 54 * 54 + 86 * 86=12002 72 * 72 + 13 * 13 + 45 * 45 + 68 * 68=12002
这是第19种组合,这种组合的和为12002
这是第20种组合,这组组合为:27 * 27 + 31 * 31 + 56 * 56 + 84 * 84=11882 72 * 72 + 13 * 13 + 65 * 65 + 48 * 48=11882
这是第20种组合,这种组合的和为11882
这是第21种组合,这组组合为:27 * 27 + 34 * 34 + 51 * 51 + 86 * 86=11882 72 * 72 + 43 * 43 + 15 * 15 + 68 * 68=11882
这是第21种组合,这种组合的和为11882
这是第22种组合,这组组合为:27 * 27 + 34 * 34 + 56 * 56 + 81 * 81=11582 72 * 72 + 43 * 43 + 65 * 65 + 18 * 18=11582
这是第22种组合,这种组合的和为11582
这是第23种组合,这组组合为:27 * 27 + 36 * 36 + 51 * 51 + 84 * 84=11682 72 * 72 + 63 * 63 + 15 * 15 + 48 * 48=11682
这是第23种组合,这种组合的和为11682
这是第24种组合,这组组合为:27 * 27 + 36 * 36 + 54 * 54 + 81 * 81=11502 72 * 72 + 63 * 63 + 45 * 45 + 18 * 18=11502
这是第24种组合,这种组合的和为11502
总共有24种组合