найти минимальное количество валюты для необходимой суммы - PullRequest
0 голосов
/ 15 сентября 2018

Я сделал небольшую программу для поиска минимального количества банкнот (валюты) на нужную сумму.например, допустим, я ввел сумму 1121 , и у меня есть массив этих значений ниже: примечания = [1, 2, 5, 10, 50, 100, 200, 500] поэтому мой окончательный результат будет:

500 * 2 (заметки) = 1000

100 * 1 = 100

20 * 1 = 20

1 * 1 = 1

, тогда общая сумма будет 1121 .любая помощь с пониманием будет высоко ценится.Я знаю, что требуется только один цикл, но я запутался в некоторых частях.

вот что я сделал: https://stackblitz.com/edit/angular-rufwzk?file=src%2Fapp%2Fapp.component.ts

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018
for (let i = noteArry.length - 1; i >= 0; i--) {
  if (amount >= noteArry[i]) {
    quotient = Math.floor(amount / noteArry[i]);
    remainder = amount % noteArry[i];
    remainingAmount = noteArry[i] * quotient;
    amount=amount-remainingAmount;
    console.log('number of notes =', noteArry[i], 'x', quotient,' notes');
  }
}

Это делает трюк просто записывает количество заметок для указанной суммы.

0 голосов
/ 15 сентября 2018

Я немного упростил ваш код (используя JS Map):

...
notesMap = new Map();
...

requiredNotes(amount) {
  for (let i = this.notes.length - 1; i >= 0 && amount; i--) {
    const qty = Math.floor(amount / this.notes[i]);
    qty && this.notesMap.set(this.notes[i], qty);
    amount = amount % this.notes[i];
  }

  const entries = Array.from(this.notesMap.entries());
  this.requireNotes = entries.map(([curr, qty]) => `${curr} * ${qty} = ${curr * qty}`);
}

STACKBLITZ

0 голосов
/ 15 сентября 2018

Вот исправленный код того, что вы хотите.Надеюсь, я правильно понял.

  requiredNotes(amount) {
    let noteArry = this.notes,
      quotient,
      remainder,
      temp,
      noteCount = 0,
      eachNote,
      remainingAmount = 0;
    for (let i = noteArry.length - 1; i >= 0; i--) {
      if (amount >= noteArry[i]) {
        quotient = Math.floor(amount / noteArry[i]);
        remainder = amount % noteArry[i];
        amount = amount - (noteArry[i] * quotient);
        if (amount == 0) {
          console.log("note:-", noteArry[i], ",number of note", quotient);
          break;
        } else if (amount != 0) {
          console.log("note:-", noteArry[i], ",number of note", quotient);
        }
      } else {
                continue;
      }
    }
  }
...