发现一很有趣的题目,讨论一下吧
一共有上下两排数,上排的十个数是【0,1,2,3,4,5,6,7,8,9】针对上排的每个数,在其对应的下面位置填写一个数,该数表示其在下面出现的次数。
如:
数值:0,1,2,3,4,5,6,7,8,9
分配:6,2,1,0,0,0,1,0,0,0
从csdn那边看到的 听不懂哦 计算机穷举也不是很难.不过我们应该可以通过一些事先分析来降低难度.
假设数字i出现了$x_i$次,那么$\sum_{i=0}^9i*x_i=\sum_{i=0}^9x_i$
可以得到约束条件$x_0=\sum_{i=2}^9 (i-1)x_i$
另外还有一个约束是$\sum_{i=0}^9x_i=10$
弄出的约束越多,搜索越快 原帖由 无心人 于 2008-8-29 14:51 发表 http://bbs.emath.ac.cn/images/common/back.gif
听不懂哦
下排0的出现次数是6,1的 出现次数是2,2的出现次数是1,。。。 终于看明白了
是
0,1,2,3,4,5,6,7,8,9
6,2,1,0,0,0,1,0,0,0
出现6个0 2个1 1个2 1个6哦
想穷举下派数字么? 发现可以完全通过逻辑推理得出,只有唯一解 第一步可以非常容易证明出现的最大数值不小于5。
假设这个最大数为k,第二步利用上面等式可以证明除了$x_0,x_1,x_2,x_k=1$其余项都是0
第三步得出$x_0=k,x_2=1,x_k=1,x_1=2$,然后由和为10得到k=6. 如果第一行数字的个数以及第一行的每一个数字(0-9,可重复)都是随机生成的
如何确定下边一行数字的解?
第一行有没有0是很重要的,如果没有0,很可能有多个解,如果有0的存在,很可能无解或者只有唯一解。
偶的一点简单看法!
数值:0,1,2,3,4,5,6,7,8,9定义成数组A(10)分配:6,2,1,0,0,0,1,0,0,0定义成数组B(10)
B(10)中所有数的和等于数组的组数10
B(1)+B(2)+.....+B(10)=10
所以大于等于5的数索引下只能分配一个1
当 i>=5 且 i<=9 时
当且仅当只有一个B(i)=1其它为0 有点象逻辑推理性质的题目
呵呵
页:
[1]
2