`
qinysong
  • 浏览: 192627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一道“正方体六个面上的四个角点整数之和相等”的求解问题

阅读更多

题目:
请将8个给定的正整数(如1,2,3,4,5,6,7,8)分别放在一个正方体的8个角的顶点上,以实现如下要求(如果可能):正方体六个面上的四个角点整数之和相等?输出结果如:A1=1,A2=2...

求解如下

正方体
算法思路
根据题境,我们先做如下设定和术语说明,以便于后面的讨论:
1、正整数以1,2,3,4,。。。8表示,以便进行分析;
2、正方体顶点标示如上所示;
3、每一个面的四个顶点数总和,我们称为该面的面积;
4、每一条边的两个顶点数和,我们称为该边的长度;

通过分析,可以得到如下断言为真(采用上面设定及术语):
1、每个面的面积相等,且每个面的面积为36/2,即18;
2、正方体的对边相等,如A1A2=A7A8、A2A6=A3A7等等;
3、整数1和(2,3)不在同一边,整数7和8不在同一边;

根据所得断言,可以得到如下求导公式和约束:
A1=1;
A4=18-A1-A2-A3=17-A2-A3;
A6=18-A1-A2-A5=17-A2-A5;
A7=18-A1-A3-A5=17-A3-A5;
A8=A1+A2-A7=2*A1+A2+A3+A5-18=A2+A3+A5-16;

A2,A3,A5为可变量,但是A2,A3,A5不等于2,3

程序实现
通过以上算法分析,可用程序实现如下(Java实现):

java 代码
  1. package qinysong.arithmetic;   
  2.   
  3. public class CubeProblem {   
  4.   
  5.   public static void main(String[] args) {   
  6.     System.out.println("CubeProblem begin ........");   
  7.     searchPeekNumber();   
  8.     System.out.println("CubeProblem end   ........");   
  9.   }   
  10.   
  11.   public static void printPeekNumbers(int[] peeks){   
  12.     System.out.println("the peek number:A1=" + peeks[0] + ";A2=" + peeks[1]   
  13.                        + ";A3=" + peeks[2] + ";A4=" + peeks[3]   
  14.                        + ";A5=" + peeks[4] + ";A6=" + peeks[5]   
  15.                        + ";A7=" + peeks[6] + ";A8=" + peeks[7]);   
  16.   }   
  17.   
  18.   // 核心函数,探寻各个顶点的数值   
  19.   public static void searchPeekNumber(){   
  20.     int[] peeks = new int[8];   
  21.     int peekNumber = 0;   
  22.     for (int i=4; i<=8; i++){   
  23.       peeks[0] = 1;   
  24.       peeks[1] = i;   
  25.       for (int j=4; j<=8; j++){   
  26.         if (hasUsed(2,j, peeks)) continue;   
  27.         peeks[2] = j;   
  28.         peekNumber = getPeekNumber(3, peeks);   
  29.         peeks[3] = peekNumber;   
  30.         for (int k=4; k<=8; k++){   
  31.           if (hasUsed(4,k, peeks)) continue;   
  32.           peeks[4] = k;   
  33.           peekNumber = getPeekNumber(5, peeks);   
  34.           if (hasUsed(5,peekNumber, peeks)) continue;   
  35.           peeks[5] = peekNumber;   
  36.           peekNumber = getPeekNumber(6, peeks);   
  37.           if (hasUsed(6,peekNumber, peeks)) continue;   
  38.           peeks[6] = peekNumber;   
  39.           peekNumber = getPeekNumber(7, peeks);   
  40.           if (hasUsed(7,peekNumber, peeks)) continue;   
  41.           peeks[7] = peekNumber;   
  42.           printPeekNumbers(peeks);   
  43.         }   
  44.       }   
  45.     }   
  46.   }   
  47.   
  48.   /**  
  49.    * 判断获取的顶点值是否在之前的顶点使用过  
  50.    * @param index int 将要赋值的顶点索引  
  51.    * @param peekNumber int  获取的顶点值  
  52.    * @return boolean  是否在之前的顶点使用过  
  53.    */  
  54.   public static boolean hasUsed(int index, int peekNumber,int[] peeks){   
  55.     if (peekNumber <= 0return true;   
  56.     for (int i=0; i<index; i++){   
  57.       if (peeks[i] == peekNumber){   
  58.         return true;   
  59.       }   
  60.     }   
  61.     return false;   
  62.   }   
  63.   
  64.   /**  
  65.    * 取得某一顶点的数值  
  66.    * 根据推导公式:  
  67.    * A4=18-A1-A2-A3;A6=18-A1-A2-A5;A7=18-A1-A3-A5;A8=2*A1+A2+A3+A5-18;  
  68.    * 这里取 A1=1  
  69.    * @param peek int  顶点标号  
  70.    * @return int 顶点数值  
  71.    */  
  72.   public static int getPeekNumber(int peek, int[] peeks) {   
  73.     switch (peek) {   
  74.       case 0:   
  75.         return 1;   
  76.       case 3:   
  77.         return 17 - peeks[1] - peeks[2];   
  78.       case 5:   
  79.         return 17 - peeks[1] - peeks[4];   
  80.       case 6:   
  81.         return 17 - peeks[2] - peeks[4];   
  82.       case 7:   
  83.         return peeks[1] + peeks[2] + peeks[4] - 16;   
  84.       default:   
  85.         return 0;   
  86.     }   
  87.   }   
  88. }   


算法特性:
因为该算法是根据分析问题的数学模型,找到路径规律,然后直接推导答案,而不是采用通过遍历每一种可能性进行判断,所以效率比较好 

分享到:
评论
28 楼 hifun 2007-01-31  
当然要高度抽象化才有其深层次的意义。。。
27 楼 qinysong 2006-11-27  
找到一种数值分布的较快方法:
1、将八个输入的整数从小到大排序,设排序后的整数在数组V[8]里;

2、
从一个顶点开始,设定该顶点为B1,为该顶点赋V[0];
然后找B1的正方体对角顶点,设定为B2,为该顶点赋V[1];
然后找B2的一个边相邻顶点,设定为B3,为该顶点赋V[2];
然后找B3的正方体对角顶点,设定为B4,为该顶点赋V[3];
然后找B4的一个边相邻顶点(排除已遍历的顶点),设定为B5,为该顶点赋V[4];
然后找B5的正方体对角顶点,设定为B6,为该顶点赋V[5];
然后找B6的一个边相邻顶点(排除已遍历的顶点),设定为B7,为该顶点赋V[6];
然后找B7的正方体对角顶点,设定为B8,为该顶点赋V[7];

结论是通过上面对八个数进行部署后,如果满足每个面相等的条件那么这就是一个解;否则输入的八个数无解。

对于规则的八个数,比如等差数列,上面的探索路径可以证明,但是对于随意的八个正整数,我还是没有证明出来,也没有找到反例可以推翻那种遍历寻找的正确性。
26 楼 garman 2006-11-27  
如果存在,面点和必为 18
结果有:
A1=4 ;
A2=5 ;
A3=7 ;
A4=2 ;
A5=1 ;
A6=8 ;
A7=6 ;
A8=3 ;
25 楼 cookoo 2006-11-24  
clamp 写道
cookoo 写道
对了,clamp还没说是什么应用背景呢?


以前我看的一篇文章找不到了,google了半天还是只有ieee的一篇讲的比较清楚
http://ieeexplore.ieee.org/iel5/8159/23900/01094073.pdf
大致意思是在频分复用(FDMA)系统中,需要在一个有限的频率段内划分出尽可能多的通道,
但是由于干扰的存在(术语叫三阶互调变失真),因此通道数量受到极大的限制。
而其中一种划分通道的方法被称为fang-sandrin数列,其数学表现形式就是这道题目了。

这道题目解的结果会直接影响到频率段利用的情况,价值很大,需要的数学知识其实也很简单,基本数论就够了,是一道很标准的算法题。

(我不是这方面出身的,具体用词可能不太正确,请专业人士指正)


补充:终于找到一篇中文的
http://www.policetech.com.cn/2005_shownews.asp?newsid=838

多谢提供资料,文中说的两种算法(其实是一种,第二种先简化穷举范围,不过我们这题没有什么间隔条件)都是暴力算法。我已经写了一个简单的暴力程序,但是算得实在太慢了,看来还需要更多灵感来优化一下。
24 楼 clamp 2006-11-23  
cookoo 写道
对了,clamp还没说是什么应用背景呢?


以前我看的一篇文章找不到了,google了半天还是只有ieee的一篇讲的比较清楚
http://ieeexplore.ieee.org/iel5/8159/23900/01094073.pdf
大致意思是在频分复用(FDMA)系统中,需要在一个有限的频率段内划分出尽可能多的通道,
但是由于干扰的存在(术语叫三阶互调变失真),因此通道数量受到极大的限制。
而其中一种划分通道的方法被称为fang-sandrin数列,其数学表现形式就是这道题目了。

这道题目解的结果会直接影响到频率段利用的情况,价值很大,需要的数学知识其实也很简单,基本数论就够了,是一道很标准的算法题。

(我不是这方面出身的,具体用词可能不太正确,请专业人士指正)


补充:终于找到一篇中文的
http://www.policetech.com.cn/2005_shownews.asp?newsid=838
23 楼 jesse 2006-11-23  
clamp 写道

4-1=7-4=3所以,1,2,4,7……不可能是解

sorry,题目没理解清楚:)

可总结的公式有:
Mn >= n*(n-1)/2 + 1
对于每一个选定的Mn,按照以下公式进行递归,
i * (i - 1)/2 + 1 <= Mi <= Mn - (n-i)*(n-i+1)/2

不过很复杂,需要记录太多中间数据
22 楼 cookoo 2006-11-23  
对了,clamp还没说是什么应用背景呢?
21 楼 clamp 2006-11-23  
引用
哦,我没有小看这个题,已经仔细思考过了,如果方法或者结果不对,请指出。


4-1=7-4=3

所以,1,2,4,7……不可能是解

20 楼 jesse 2006-11-23  
clamp 写道
jesse 写道
最大值 = n*(n-1)/2 + 1
(因为数列1,2,4,7,....,Mi,Mi+i-1,....,是其中一个规则解)
(这个题目的问题应该是判断n个正整数时,有多少最优解,否则没任何意义,当然可以通过程序把所有的最优解列举出来。
最优解的个数=(n-2)*(n-3)* ......* 2 * 1
(通过递规的方式穷举所有的结果)


//sigh,不要这么小看这道题目好不好?
再仔细思考思考吧

btw:你给出的所谓规则解是错的。





哦,我没有小看这个题,已经仔细思考过了,如果方法或者结果不对,请指出。
19 楼 clamp 2006-11-22  
jesse 写道
最大值 = n*(n-1)/2 + 1
(因为数列1,2,4,7,....,Mi, ,是其中一个规则解)
(这个题目的问题应该是判断n个正整数时,有多少最优解,否则没任何意义,当然可以通过程序把所有的最优解列举出来。
最优解的个数=(n-2)*(n-3)* ......* 2 * 1
(通过递规的方式穷举所有的结果)


//sigh,不要这么小看这道题目好不好?
再仔细思考思考吧

btw:你给出的所谓规则解是错的。




18 楼 jesse 2006-11-22  
最大值 = n*(n-1)/2 + 1
(因为数列1,2,4,7,....,Mi, ,是其中一个规则解)
(这个题目的问题应该是判断n个正整数时,有多少最优解,否则没任何意义,当然可以通过程序把所有的最优解列举出来。
最优解的个数=(n-2)*(n-3)* ......* 2 * 1
(通过递规的方式穷举所有的结果)
17 楼 cookoo 2006-11-22  
那个公式不对的,看那个超长的帖子47,50,74楼也有人得出1,2,5,10,12的结果,而且最优解的数列还不唯一。。。穷举没戏了。
16 楼 deafwolf 2006-11-22  
应该不是,那贴我找过,推出来的规律是最大的差应该是n*(n-1)/2,所以n=5时,最大的是11

http://www.web-nb.com/archivers/tid-3d0811-00-931488/
15 楼 cookoo 2006-11-22  
n=5时是1,2,5,10,12么?
14 楼 clamp 2006-11-21  
想要算法题?多的是,只怕根本没本事做

以前csdn上就有过一道,任意给定n个正整数,要求其两两之间的差都不相等,并且使得最大的数和最小的数的差最小。(不妨设最小数为1)

当n=3时,1,2,4
当n=4时,1,2,5,7
……

注意:这道题是有应用背景的,google一下应该可以搜到。
13 楼 deafwolf 2006-11-21  
hurricane1026 写道
qinysong 写道
下面是另一道问题,供大家娱乐

问题描述:
任意给定一个正方形,将正方形的各边做n等分,并将相应各点连接成水平或垂直的直线,如果从正方形的左下角(0,0)出发,沿各边线或连接线,自左向右或自下而上的方向,到达正方形的右上角(n,n),请用程序计算并输出所有可能的路径总数和具体线路.输出结果按以下方式:

以n=1为例:
n = 1
Path1: (0,0) - (0,1) - (1,1)
Path2: (0,0) - (1,0) - (1,1)
Total = 2


这有什么好做的?
一个组合就完了,一共2n步,其中一半是向上, 你只要确定哪些步是向上就可以了。Cn/2n


麻烦给个代码看看

我的思路是用stack遍历,因为这是一个有向无环图
虽然遍历很容易,输出那种格式的结果就比较麻烦了,还没想到好的
12 楼 qinysong 2006-11-21  
jkit 写道
不知道这个贴的精华之处在什么地方。让人脑代替电脑做特定思考似乎不是什么值得称道的事。
大家不妨思考一下足球的每个面上的顶点之和都相等解法。看看人脑可以帮电脑做些什么,电脑可以帮人脑做些什么。


“让人脑代替电脑做特定思考似乎不是什么值得称道的事。”

我不太同意这种看法,首先电脑是不会做特定思考的,程序所做的只是一种计算、判断和选择,这种判断和选择是需要条件的,而这些条件必然是一种直接或间接的输入(发展到黑客帝国时代,或许会期待到你说的样子,呵呵),对于一个算法,哪怕其很简单,发现其内在实质,都是很有价值的,都是比一股脑的抛给电脑,让他在那狂奔要好

希望谁拿出一个真正的算法问题出来讨论。:wink:
11 楼 cookoo 2006-11-21  
qinysong 写道
3、最小的数(如1)不能和次小的两个(如2,3)在同一边,最大的不和次大的两个在同一边;

这样表述就没有问题了吧?

这个推断是建立在8个参数不等的前提下的巴?否则这条不成立。

BTW, jkit去海版申请评议好了,天知道谁投的。。。
10 楼 qinysong 2006-11-20  
下面是另一道问题,供大家娱乐

问题描述:
任意给定一个正方形,将正方形的各边做n等分,并将相应各点连接成水平或垂直的直线,如果从正方形的左下角(0,0)出发,沿各边线或连接线,自左向右或自下而上的方向,到达正方形的右上角(n,n),请用程序计算并输出所有可能的路径总数和具体线路.输出结果按以下方式:

以n=1为例:
n = 1
Path1: (0,0) - (0,1) - (1,1)
Path2: (0,0) - (1,0) - (1,1)
Total = 2
9 楼 qinysong 2006-11-20  
hurricane1026 写道
jkit 写道
不知道这个贴的精华之处在什么地方。让人脑代替电脑做特定思考似乎不是什么值得称道的事。
大家不妨思考一下足球的每个面上的顶点之和都相等解法。看看人脑可以帮电脑做些什么,电脑可以帮人脑做些什么。

说实在的,我也不理解为什么这个是精华,可能是讨论算法的太少了吧。不过这个帖子里面的也算不上真正的算法。因为问题复杂度太低。你说的这个很有难度,等我找找足球的相关资料区。。。

欢迎大家贴出有意思的算法题目,一起研究

相关推荐

    七年级数学上期末总复习.ppt

    6. **余角和补角**:余角是和另一个角相加等于90°的角,补角则是相加等于180°的角。两个角的余角或补角相等,只取决于它们的数量关系,而与它们的位置无关。例如,如果∠1+∠2=90°,那么∠1是∠2的余角,反之亦然...

    中考数学考前冲刺题4套2精选.doc

    6. 圆的切线性质与三角形面积:第六题涉及圆的切线性质,以及根据角度和半径计算三角形面积的问题。切线与半径形成的夹角与圆周角相等,可以通过这个性质来确定角度,然后利用三角形面积公式计算面积。 7. 因式分解...

    苏教版六年级数学上册各单元知识点汇总.pdf

    正方体是特殊的长方体,其6个面都是正方形且完全相同,有8个顶点和12条长度相等的棱。表面积的概念也被引入,长方体的表面积计算公式为(长×宽+长×高+宽×高)×2,正方体的表面积公式为棱长×棱长×6。此外,还涉及...

    上海市西中学人教版初中七年级数学上册第四章《几何图形初步》模拟检测卷(有答案解析).pdf

    6. 角平分线的性质:角平分线将原角分成两个相等的角,这对于解题至关重要。 7. 三角尺的应用:题目考察了使用三角尺摆放形成互余角的情况,要求学生理解直角三角形的性质。 8. 直线交点的最多与最少数量:平面...

    黑龙江哈尔滨市六年级(下)期末数学试卷(五四学制)_(含答案).doc

    3. 补角的概念:等角的补角相等是正确的,如果两个角是等角,那么它们的补角也一定是相等的。 4. 数轴上的点与有理数:在有理数中,正数是指大于零的数。题目列举了几个有理数,需要判断正数的个数。 5. 代数运算...

    湖南省长沙市七年级(上)期末数学试卷(含答案).pdf

    以上是试卷中涵盖的数学知识点,包括科学记数法、平行线性质、解方程、比例问题、几何序列、几何折叠、代数运算、绝对值和相反数、角度计算、整式化简、解方程、数轴距离、平行线和垂直线、购物策略、角平分线和平行...

    八年级数学第一学期期末试卷四.doc

    6. 等腰三角形的顶角:等腰三角形的顶角取决于外角,外角等于不相邻两底角之和。题目中给出一个等腰三角形的外角,需要推算顶角的度数。 7. 垂直平分线的性质:垂直平分线将线段分成相等的两部分,因此可以利用这个...

    吉林省长春市朝阳区2014年初中毕业生学业考试模拟(一)数学 无答案.doc

    4. 正方体的展开图:题目中涉及正方体的六个面,展示了正方体展开图,考察空间想象能力,找到相对面。 5. 不等式组的解集:不等式组的解集是满足所有不等式的x的值的集合。 6. 平行线性质:平行线性质涉及到角度...

    小学数学毕业专项复习 解决问题二 人教新课标版

    这些问题涵盖了小学数学的多个核心知识点,包括但不限于整数除法、余数的概念、周长与面积的计算、体积的理解、比例与比例关系、实际问题的解决策略以及几何图形的性质。以下是这些题目涉及的具体知识讲解: 1. ...

    河南省上蔡县2015 2016学年七年级数学上学期第二次月考试题(无答案) 新人教版.doc

    - 正方体的视图:问题13涉及正方体的三个视图,即俯视图、主视图和侧视图。 - 角度的计算:问题14中的∠CBD可以通过图形分析得出。 - 立体图形的视图:问题15要求识别立体图形的正面和侧面视图。 3. 解答题涉及...

    小学四年级数学竞赛试卷(附答案).pdf

    这份小学四年级数学竞赛试卷包含了多个数学知识点,主要涉及数的运算、逻辑推理、几何图形、数量关系和问题解决能力。以下是对试卷中各题目所涵盖知识点的详细解析: 1. **除法与余数**:题目要求找到除数,这涉及...

    七年级上册数学期末练习培优提高(三)精选.doc

    2. **正方体的平面展开图** - 正方体的六个面可以展开成一个平面图形,题目中涉及到了面的标记和相对位置。理解正方体的面与面的关系,如对面是相对的,对于解决这类问题至关重要。 3. **绝对值** - 绝对值表示一个...

    2022年部编人教版五年级数学上册期中考试题【含答案】.pdf

    13. 实际问题解决:涵盖了长方体和正方体的体积计算、面积计算、比例计算以及实际生活中的应用问题,如数苹果、工程进度计算和合作效率分析等。 这些知识点涵盖了五年级数学的基础概念、计算技能和实际应用,旨在...

    通用版六年级数学下册全年级知识点素材苏教版

    【通用版六年级数学下册全年级知识点素材苏教版】涵盖了多个数学概念,以下是这些概念的详细解析: **第一单元:方程** 方程是解决问题的重要工具,本单元主要涉及列方程解两步应用题和含有两个未知项的应用题。列...

    新北师大版丰富的图形世界测试卷及答案解析.doc

    - 正方形六个面上的整数和问题,利用相对面的数字和相等,可以求解整数的和。 - 正方体礼品盒的平面展开图问题,考虑相邻面的图案关系。 本测试卷旨在通过一系列问题,帮助学生巩固对几何体的理解,提高他们识别...

    新课标五年级数学上册期中考试题【带答案】.pdf

    1. 两个三角形面积相等并不意味着底和高都相等,只意味着底和高的乘积相等。 2. 无限小数包括循环小数和非循环小数,后者不是循环小数的例子。 3. 整数的运算规则适用于小数。 4. 连续自然数中至少有一个合数,考虑1...

    2021—2022年部编版五年级数学上册期中考试题(1套).pdf

    10. 小数乘法的结果位数和四舍五入。 判断题主要测试学生对数学概念的理解,如: 1. 循环小数和无限小数的区别。 2. 两个三角形面积相等不一定意味着等底等高。 3. 自然数分类,包含0的特殊性。 4. 质数和合数之和...

    2020年五年级下册数学期中全优测评数学试卷(B卷)(附答案)人教版.pdf

    问题19求解两个质数的和与积,这是基础的数论问题。问题20通过观察几何图形推断所用正方体的数量。问题21要求填写合适的体积单位。问题22要求分数的通分和比较大小。问题23则列出了1到30内的奇数、合数、质数,以及...

    新版部编人教版五年级数学上册期中考试题及答案【精编】.pdf

    16. 3的倍数性质:选择题3中,判断3的倍数,需要各位数字之和能被3整除。 17. 连续自然数的和:选择题4中,三个连续自然数的和一定是3的倍数。 18. 形状变化:选择题5中,将长方形拉成平行四边形,周长不变,面积...

    人教小学数学五年级下册复习题学习教案.pptx

    - 把三个棱长为4厘米的正方体拼成长方体,表面积减少了4个正方形面的面积,体积是三个正方体体积之和。 3. 棱长总和与正方体的尺寸: - 正方体共有12条棱,若棱长总和为72厘米,则每条棱长为72/12=6厘米。 - ...

Global site tag (gtag.js) - Google Analytics