作业帮 > 综合 > 作业

等待高人帮我解决,数字和值分解小程序.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 20:56:33
等待高人帮我解决,数字和值分解小程序.
问题是这样的,求5和8个数和值的分解..例:有这样一组数字1,2,3,4,5.和值为15的时候可以分解成:1,2,3,4,5 .1,1,5,5,3 和值得为14的时候可以分解成:1,1,3,4,5 .1,1,2,5,5 ==== 有多种可能.由于人工分拆太过复杂我想同过一个小程序来实现他.我的想法是这样的,编辑框1,人工输入一组数字(任意数字1-6或2-6=====) ,编辑框2,控制想要分解的和值.,点击按钮.就可以出现该和值所可能出现的数字组合.该数字组合的范围只能从编辑框1里边提取.例如:编辑框1里面的内容是3,4,5,6,7 (人为输入的数字组)编辑框2里面的内容是40(要分解的和值)点击按钮1.编辑框3出现和值40的所以分解组合(如:7,5,4,5,4,3,3,4,5).
哪位大哥能帮忙做这个程序.
200分最高分了哦.
我有个思路
首先弄个函数,负责分解字符串,把输入的几个数分解到数组中,便于后面做排列
不少编程语言都有类似splite这样的分解函数,不行就自己写一个,发现逗号就保存变量
其次是排列,可以用现成的排列函数,也可以自己弄一个
我想,把5个数或者不定数量的数看成1111111或00000这种组合,0代表不参加计算,1代表参加计算,就是几个开关,排列这些开关,最后进行加法计算,与和值进行比较
以下是思路代码
t(i) =0\\给所有的开关初始化为0
while 循环,可以设置无限循环,最后通过程序内部设置终止条件
t(i) = t(i) +1\\从第一个开关开始设置,每次加1
for i =1 to n-1
if t(i)=2 then\\发现是2就回退到0
t(i) = 1
t(i+1) =t(i+1) +1\\采用进位方式给下一级开关定义
end if
next\\通过循环,给所有开关定义,其实只是发现2才处理,不会一次性都处理
if t(n) =2\\发现当前是最后一级开关,并且是2,说明完全处理了,退出循环
这里面做加法判断,输出合适的组合
for j = 1 to n\\循环做加法
jieguo = jieguo + t(j)*sz(j)
next
if jieguo = 输入和值 then
输出组合
endif
再问: 您能帮忙做这个小程序吗? 说实在的,我不会做..恳请大家帮忙!谢谢~~