题目太长,这里就不描述了,这里是题目
字符串是16位,那么数字10肯定在外圈,因为内圈的数字会被用两次,长度就是17了。
题目一个要求是从外围的最小数开始,现在又要保证字符串最大,那么如果6,7,8,9,10都在外圈,字符串就是6开头,否则至少是5开头,比6开头要小,所以要使得其最大化,6,7,8,9,10都在外圈。
参考三角环中数字最大的形式,4,5,6三个数字逆时针旋转,于是乎我也如法炮制,让6,7,8,9,10挨着并逆时针排列着,如图:
在此基础上,每行最小和是10+1+2 = 13。我们现在就推理下每行13的可行性:
6和10要共享一个数字B,B只能是1或者2,那么6所在的这一行要想到13,至少还差5。此时,B=2,A=5,C=1。
考虑7所在的行,13-7-5 = 1。但是1已经被用掉了。
排除这种情况。
每行的最大和是6+5+4 = 15。
很显然,B不能是5,所以B=4。那么A=5。那么E=3。那么D=4。4已经被用过了。
也要排除这种可能性。
那么,每行和就是14了。
6所在的哪行,只能是一个5一个3。B又不能是5。所以A=5,B=3。那么C=1。那么D=4。最后的E是2。
根据这种排列,6531031914842725就是答案了。
虽然每一部推理都很有根据,最后也得到了答案,但是所有推理的基础不不牢靠的,也就是给出示意图的那一步。
为什么要挨着排放呢?虽说6的顺时针右侧是10而不是9呢?显然9比10的第一位要大的。
为什么呢?
6要和一个数字共享A,A越大越好,显然那个被共享的数字越小越好啊,那就设定成7了。但用这种想法再逆时针推理显然也站不稳啊。
这就像吐槽程序员的一句话,程序运行起来了,但不知道为什么。