如何在visual basic中找到一组5个数字加起来为15?

时间:2010-12-16 12:30:10

标签: vb.net algorithm

我的计算类中的任务是查找5个集合中的任何数字是否加起来为15,如果他们确实奖励了一个点。我无法弄清楚如何通过添加一组随机的5个数字来找出多个特定数字。它们是否是特定于此的算法?它也必须用visual basic编写。

2 个答案:

答案 0 :(得分:1)

您要查找的算法称为BackTracking。由于这是家庭作业,我不打算提供代码。这个想法是这样的。

  • 只要数量小于15
  • ,就递归获取数字
  • 如果它恰好是15,那么OK,你找到了解决方案
  • 如果超过15,则返回后退一步并取另一个号码
  • 继续,直到完成所有变体

答案 1 :(得分:0)

在5个数字的情况下,我会强制它并尝试所有32种可能的组合。

以下是此任务的一些可能的伪代码:

input = Array of 5 random integers (starting with index 0)
onoff = new Array of 5 integers (starting with index 0), initialized to 0

loop
  // Create all possible combinations of 0 and 1 in onoff Array
  // Hint: This is the same as counting up a binary number and looking at the bits.
  onoff[0] = onoff[0]+1
  for i=0 to 3
    if onoff[i] > 1
      onoff[i] = 0
      onoff[i+1] = onoff[i+1] + 1

  if onoff[4] > 1
    break loop

  // Create sum for given combination
  sum = 0
  for i=0 to 4
    sum = sum + onoff[i]*input[i]

  if sum = 15
    output "Found value set"
    for i=0 to 4
      if onoff[i] = 1
        output " "+input[i]

翻译成VB仍然是作业: - )