Member 14829312 Ответов: 3

Попробуйте решить эту проблему на java


Есть N человек, пронумерованных от 1 до N, стоящих в очереди, чтобы снять деньги из банкомата. Очередь формируется в порядке возрастания их количества. Человек с номером i хочет снять сумму Ai. Максимальная сумма, которую человек может снять за один раз, составляет X. Если им нужно больше денег, чем X, им нужно встать в конце очереди и ждать своей очереди в очереди. Человек покидает очередь, как только он снял необходимую сумму.

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

Первая строка каждого теста содержит два целых числа, разделенных пробелами: количество людей, стоящих в очереди, N и максимальную сумму X, которую можно снять за один ход.
Следующая строка содержит N целых чисел, разделенных пробелами Ai.
Выход
Для каждого тестового случая выведите одну строку, содержащую случай #x: y, где x-номер тестового случая (начиная с 1), а y-разделенный пробелом список целых чисел, обозначающих порядок, в котором люди покидают очередь.

Пределы
Ограничение по времени: 20 секунд на тестовый набор.
Ограничение памяти: 1 ГБ.
1 ≤ T ≤ 100.

Тестовый Набор 1
1 ≤ N ≤ 100.
1 ≤ Ai ≤ 100.
1 ≤ X ≤ 100.

Тестовый Набор 2
1 ≤ N ≤ 105 для не более чем 10 тестовых случаев. Для остальных случаев 1 ≤ N ≤ 100
1 ≤ Ai ≤ 109.
1 ≤ X ≤ 109.

Образец

Ввод

Выход

2
3 3
2 7 4
5 6
9 10 4 7 2


Случай №1: 1 3 2
Случай №2: 3 5 1 2 4

Что я уже пробовал:

Я пытаюсь получить его решение, но помогите мне.

3 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я пытаюсь получить его решение, но помогите мне.

Если у вас есть конкретная проблема или вопрос, вы должны его сформулировать. В противном случае вы просите нас решить проблему, и это произойдет не скоро.

Эта проблема типична для сайтов challenges, вам нужно понимать, что вы никогда не научитесь программированию, решая такие задачи, они существуют для того, чтобы вы могли проверить свои навыки. Если вам не удается решить проблему, это просто означает, что ваши навыки недостаточно развиты.

Совет:
- Правильно изучайте Java или другие языки
- Изучите один или несколько методов анализа, E. W. Djikstra/N. Уирт Stepwize уточнение/метод сверху вниз это хорошее начало.
Структурного Программирования.формат PDF[^]
https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design[^]
https://en.wikipedia.org/wiki/Structured_programming[^]
https://en.wikipedia.org/wiki/Edsger_W._Dijkstra[^]
https://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF[^]
Разработка программы путем поэтапного уточнения[^]
- Изучайте алгоритмы и структуры данных.
GitHub - The-Art-of-Computer-Programming-Books: "повседневная жизнь похожа на программирование, я думаю. Если вы любите что-то, вы можете вложить в это красоту".? Дональд Э. Кнут[^]


Рейтинг:
1

Richard MacCutchan

Если вы хотите изучить Java, то ваше время будет лучше потратить на проработку Учебные Пособия По Java™ [^], где вы будете учиться на реальных примерах программирования. Малоизвестные математические задачи имеют очень ограниченное применение и редко встречаются в реальном мире.


Рейтинг:
0

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.