Определите минимальное количество монет, необходимое для внесения изменений, используя жадный подход

Это общая арность типа или другой путь - число параметров типа, поддерживаемых общим типом. IEnumerable<T> поддерживает параметр одного типа. Если вы посмотрели Dictionary<TKey, TValue>, вы заметили бы значение arity 2.

0
задан bruno 6 March 2019 в 17:36
поделиться

2 ответа

Это действительно жадный подход, но вам нужно поменять местами порядок if-then-else. В общем, жадный означает потреблять в текущий момент самое большое количество, которое вы можете потреблять.

Вам нужно сначала проверить самую большую монету. Нет необходимости в цикле while.

if(sum>=100) {
  hundreds=sum/100;
  sum-=hundreds*100;
}
if(sum>=10){
  tens=sum/10;
  sum-=tens*10;
} 
ones = sum; 
0
ответ дан alinsoar 6 March 2019 в 17:36
поделиться

Следующий предложенный код:

  1. чисто компилируется
  2. не включает заголовочные файлы, содержимое которых не используется
  3. следует аксиоме: только один оператор на строку и (самое большее) объявление одной переменной на оператор.
  4. выполняет желаемую функциональность
  5. выполняет соответствующую проверку ошибок
  6. выполняет «жадный» алгоритм потребления как можно большего количества «денег» как можно быстрее, используя наименьшее количество «счетов» '

и теперь, предлагаемый код:

#include <stdio.h>


int main( void )
{
    int sum;

    do
    {
        printf("Enter a sum of money in range 1 to 999\n");
        if( scanf("%d",&sum) != 1)
        {
            fprintf( stderr, "scanf failed\n");
            return -1;
        }       
    } while( sum<0 || sum>999 );

    int hundreds = sum/100;
    sum          = sum % 100;
    int tens     = sum/10;
    sum          = sum % 10;
    int ones     = sum;

    printf("%d $100, %d $10, %d $1\n",hundreds,tens,ones);
}

В предлагаемом коде игнорируются (американские) купюры $ 50, $ 20, $ 5 и $ 2

0
ответ дан user3629249 6 March 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: