木棒求原长问题~想了两天了,没想出一个好的检验方法

来源:百度知道 编辑:UC知道 时间:2024/07/05 13:27:46
有若干根等长的木棒,被随意分成若干小段。问如何从小木棒推出原先木棒的最小长度?比如现有五根小木棒,分别长度为5,4,3,2,1,显然原先木棒长度为5。原木棒也可能被分成3根以上
但是假定了一次原先木棒的长度m后,需要进行一次检验,令m恰好是所有小木棒中若干段的和。
请说说你的方法,如何进行检验
哈~其实我就是想把这个编程,所以要把各种情况都考虑进来。我的想法是,一个木棒被分段后总是被分出大的部分和小的部分,所以可以先对所有的小木棒进行从大到小的排列。举个例子,排列好后有6,5,4,3,3,2,2,1,1,1这些长度的棒子。假定原先棒子的长度为7。第一个和最后一个加刚好等于7,成立;再看第二位,5+1,不够,再加个小数1,5+1+1,成立;4+2,不够,再加个现有的最小数2,4+2+2>7,所以跳过2,直接加3,4+3,成立;剩下的,3+2+2,成立。所以最小长度是7.
但是。。。。今早想了下,这个方法不对。。。。
比如有这样一列数:。。。。,X,。。。。。,4,3,2,2,2(句号代表省略的数,X为某一特定的数)。假定原长等于X+5,即为X+3+2。但是照我的方法,X+2+2不够,再加个2,就会超出,然后跳过2,直接X+3,不够,再加4,又超了。这样就永远都得不到X+5了。
如果不跳过,又会多出好些情况。
求一个更好的办法。。。

说一个想法,看看行不行.以 1,2,3,4,5 为例
先求出总长度L=15.
假设原来是n根木棒,n从1开始检验:
n=1,这总是可能的,原来是1根,长15.
n=2,L/n=15/2.1,2,3,4,5不可能分成两组,每组和等于15/2,
n=3,L/n=5,1,2,3,4,5可以分成3组,恰有5=1+4=2+3,原来是3根,每根长5.
n=4,L/n=15/4.小于最长的木棒,检验结束.
结论:原先木棒的最小长度是5.

如果小段数目多一些,这种检验的工作量是很大的,可以编个程序,让电脑来做.
如果限定小段长度都是整数,问题就简单些,只要检验L 的约数.

无能为力

把分的段数加起来,如果等于原先木棒长度,就检验好了

乱猜的,错了不要打我哦

看不懂题目。。。