前言给定一个含有8个数字的数组,判断有没有可能把这8个数字分别放到正方体的8个顶点上,使得正方体上三组相对面上的4个顶点的和都相等。本文就跟大家分享下这个问题的解决方案,欢迎各位感兴趣的开发者阅读本文。正方体的组成初次看到这个问题,很多开发者可能会比较蒙,一时间无法找到切入点。那我们就先画个正方体出来,给每个顶点标记a1, a2 ,a3 ,…, a8。如下图所示:实现思路有了图之后,我们在做进一步的分析,这个正方体有6个面,3组相对的面(上下、前后、左右):a1, a2, a4, a3 | a5, a6, a8, a7a1, a5, a6, a2 | a3, a4, a8, a7a1, a3, a7, a5 | a2, a4, a8, a6有了这些条件后,再次结合题意,我们可知:只需要将8个数字分别放入正方体的8个顶点中,判断三组相对面的顶点和是否都相等,这个问题就解决了。8个数字分别放到8个顶点上,所有数字都有可能放入任意一个顶点。换言之就是求这8个数字的所有排列,我的另一篇文章实现字符串的排列算法详细讲解了这个算法的实现思路,此处不过多赘述。分析到这里,我们就得出了一个完整的实现思路:求出给定数组中8个数字的所有排列遍历所有排列,将每个排列中的元素映射到变量中(a1, a2, …, a8)判断8个点组成的三组相对面的顶点和是否相等实现代码分析出思路后,我们就可以将上述思路转换成
...
继续阅读
(46)