Лара товаров осень трюк: дп центов вопрос

Проблемы:
1 мин, 2 мин, 5 мин, 10 мин четыре вида монет, неограниченное количество монет каждых данных центов N (N <= 100000), в сочетании с числом п может состоять центы?

URL: https://www.nowcoder.com/question/next?pid=18874168&qid=587672&tid=29129649

  Huawei представляет собой вид сверху из названия подобных вопросов, проблемы, относимых к простому дпу, дп сначала определить [н-], минимальное количество монет, хранящихся от желаемого 0-N, V [I] хранение номинал монеты, инициализация дп [0] = 0, то переходное состояние уравнение, полученное дп [I] = тт {дп [I-1] + 1, дп [IV [J]] + 1};

 Для уравнения состояния можно понять: центы с учетом п, номер я настроен на использование валюты, деноминация валюты является последним K, K при условии полного использования кредитов, то к числу п / к, то есть формулы:

      дп [я] [п] = дп [I-1] [п-0 * K] + дп [I-1] [п-1 * K] + дп [I-1] [п-2 * K] + ....... + дп [I-1] [пп / к * K], то естьвсех случаях включаетсебя: к Балла не используется, использование кредитной K, K кредитовиспользованием 2 ....... все с к кредитам, уравнение состояния перехода может быть получено в виде двузначных групп;

  Dp упрощена одномерное уравнение: дп [I] , дп = [I] + дп [IV [J]] ;

Код:

импорт java.util.Scanner;

общественный  класс Основной {
     общественный  статический  недействительный основной (String арг []) {
    Входной Сканер = новый сканер (System.in);
    INT п = input.nextInt ();
    INT монеты [] = {1,2,5,10 };
    ИНТ [] дп = новый  INT [100001 ];
    дп [ 0] = 1 ;
    для ( INT = 0; г <4; я ++ ) {
         для ( INT J = монет [I]; J <= N; j ++ ) {
            дп [J] = (дп [J] + дп [j-монеты [I]])% 1000000007 ;
        }
    }
    System.out.println (дп [п]);
    
    }
}

 

Может быть понято: общая сумма денег на каждый из них может быть сформирован, может быть, как и до начала двумерного массива, полученного, использование 1 монеты, монета 1 2, 2 1 монеты, валюта ... 3 3 .... так остановить итерации, деньги растет J, минус количество монет постоянно увеличивается, ниже формула является постоянной итерации, минус

Первая монета, метод вычитания кредитов 2 ... остановить номер итерации получается, требуемые результаты могут быть получены.

     Временная сложность кода только О (п), намного меньше, чем метод силового решения;

дп [J] = (дп [J] + дп [j-монеты [I]])% 1000000007 ;


 

 

рекомендация

отwww.cnblogs.com/lszz/p/11802247.html