如何查找数字(在最小-最大范围内)以及所有等于数字总和的序列=一个数字

时间:2019-05-18 10:49:56

标签: c# algorithm

输入:

  • 数字位数
  • 数字总和
  • 可以使用的数字范围

输出:

  • 所有可能的数字总和等于定义为输入的数字。

示例:


(num_digits = 4 ,sum = 12 ,range = 0-4

  • 3 4 4 1
  • 4 4 4 0
  • 4 0 4 4
  • 1 4 4 3

(num_digits = 5 ,sum = 18 ,range = 0-7

  • 5 5 5 2 1
  • 1 2 5 5 5
  • 5 5 2 1 5
  • 0 2 2 7 7
  • 7 7 0 2 2
  • 2 2 7 7 0

(num_digits = 3 ,sum = 20 ,range = 0-8

  • 8 8 4
  • 4 8 8
  • 8 4 8
  • 7 7 6
  • 7 8 5

一般方法(算法)是首选,但是C#可以是选择解析的语言

致谢

1 个答案:

答案 0 :(得分:0)

如果我是你,我将使用递归,因为在 1234 1235 中, 123 的总和是很常见的,因此不应被多次计算。

您的递归函数有两个主要规则:

  1. 最大递归深度=数字位数。
  2. 最高级别使用每个可能数字
  3. 调用较低级别

在您的情况下可能=数字范围。

在本练习中需要使用的东西:

这足以编写程序,但要习惯StackOverflow上的一件事:复制A-Z解决方案并不能解决算法任务。