如何将一个数字拆分成较小的数字,以便它们的总和返回原始数字......? [英] how to split a number into smaller numbers so that their sum return the original number...?

查看:98
本文介绍了如何将一个数字拆分成较小的数字,以便它们的总和返回原始数字......?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将数字拆分成较小的数字,以便它们的总和返回原始数字,所有可能的组合

例如

no is 5

1 + 1 + 1 + 1 + 1

2 + 1 + 1 + 1

3 + 1 + 1

4 + 1

2 + 3

how to split a number into smaller numbers so that their sum return the original number, all possible combinations
e.g
no is 5
1+1+1+1+1
2+1+1+1
3+1+1
4+1
2+3

推荐答案

解决方案可能是:

The solution might be:


  1. 将数字写为1的系列(5 = 1 + 1 + 1 + 1 + 1)并将其放入适当的变量(类似于数组)。我们可以称之为seq。
  2. 求和列表广告的前两个元素将结果放在另一个列表中(如果它尚不存在(既不是本身也不是其中一个排列))
  3. 如果程序只剩下两个数字,则返回变量seq并将最后两个元素相加,转到2,否则,如果剩下两个以上的元素,则转到2而不做任何事情。





要编写在最终列表中检查dobules的算法,我建议:



  • 最终列表必须是数组列表
  • 检查双精度时,排序列表当前元素的元素,而不更改它(在临时数组中执行)并对你发现的那个进行排序。如果它们在相同的位置包含相同的元素,它已经在数组中,所以不要将你找到的结果添加到列表中,否则,添加它!!


    • 一个数字是起点( x)。
    • 包含当前结果的数组(初始值:x个元素设置为1)
    • 包含初始点的数组(在第3点修改)程序只剩下2个项目的程序。我们可以调用这个数组来源)
    • 包含结果的列表


    这篇关于如何将一个数字拆分成较小的数字,以便它们的总和返回原始数字......?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆