Как я могу найти, если набор из 5 чисел добавляет до 15 в Visual Basic? - PullRequest
0 голосов
/ 16 декабря 2010

Задача в моем компьютерном классе - найти, суммируются ли какие-либо числа из набора 5 до 15, если они действительно дают балл. Я не могу понять, как найти несколько конкретных чисел, сложив случайный набор из 5 чисел. Это какие-то алгоритмы, специфичные для этого? Также это должно быть написано на Visual Basic.

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Алгоритм, который вы ищете, называется BackTracking .Поскольку это домашнее задание, я не буду предоставлять код.Идея заключается в следующем.

  • Возьмите числа рекурсивно, если их сумма меньше 15
  • , если получится ровно 15, тогда ОК, вы нашли решение
  • если оно превышает 15, вернитесь на один шаг назад и возьмите другой номер
  • и продолжайте до тех пор, пока не будут выполнены все варианты
0 голосов
/ 16 декабря 2010

В случае 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еще домашнее задание: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...