Как проверить, меньше ли номер в списке, чем другой номер в списке - PullRequest
1 голос
/ 13 января 2020

Я пытаюсь решить вопрос о коробке и контейнере, коробка (список размеров ящиков) помещается в контейнер (список размеров емкостей) того же размера или больше. Первоначально, n-й индексный блок сверяется с n-ным индексом контейнера. если он не соответствует требованию, он идет и проверяет следующий контейнер (немедленный правый индекс). Должен возвращаться, если найден индекс контейнера после последнего совпадения.

box_list = [1, 3, 7, 8]
container_list = [1, 2, 5, 6]

здесь поле с индексом 0 помещается в контейнер с индексом 0. и 1-й индексный блок в 2-м индексном контейнере.

2-й и 3-й индексный блок не помещается ни в один контейнер в выводе списка контейнеров, должен быть 3 как 5 (2-й индекс списка контейнеров, где было найдено последнее совпадение).

Я пытался использовать вложенные циклы, но есть ли лучший способ сделать это. Спасибо!

Ответы [ 2 ]

1 голос
/ 13 января 2020

Я предполагаю, что вывод должен быть индексом последнего контейнера, который соответствует блоку. Приведенный ниже фрагмент выводит индекс последнего соответствующего контейнера. Если совпадений не найдено, выдается -1.

box_list = [1, 3, 7, 8]
container_list = [1, 2, 5, 6]

last_index = -1;
j=0;
for i in range(len(box_list)):
    while(j < len(container_list) and box_list[i] > container_list[j]):
            j=j+1;
    if(j>=len(container_list)):
        break;  
    if box_list[i] <= container_list[j]:
        last_index = j;
    j=j+1;

print(last_index);
0 голосов
/ 13 января 2020

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

for i in range(len(box_list)):
  for j in range(i, len(container_list)):
    if box_list[i] > container_list[j]:
      print("Box at " + str(i) + " doesn't fit the container at " + str(j))
    else:
      print("Box at " + str(i) + " fits in container at " + str(j))
      break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...