Как заказать строку [] в C ++ - PullRequest
2 голосов
/ 22 июня 2010

Ввод строки [], как показано ниже.

"CSE111: CSE110 MATH101"

"CSE110:"

Мне нужно упорядочить строки, основываясь на некоторой логике. Например, мой вывод должен быть string[] как

"CSE110", "MATH122", "CSE111"

Мой вопрос

  1. Во время сканирования входного массива, если одна строка выбрана в качестве первой строки выходного массива, то как мне пропустить все вхождения этой конкретной строки, пока я продолжаю обрабатывать string[] для второго вывода строка и т.д ..

Например:

Ввод:

"CSE111: CSE110 MATH101"

"CSE110:"

Если CSE110 выбран в качестве первой строки в выходных данных, то, когда я сканирую входную строку [], чтобы вторая строка была частью выходных данных, я не должен рассматривать CSE110.

Как мне этого добиться? Я с нетерпением жду ответа:

  1. Сохранить входные данные в строке []
  2. перебирать строки по очереди, используя оператор strtok или stringstream >>.
  3. Как только первая строка найдена ... бла-бла-бла ....

Надеюсь, мой вопрос достаточно ясен. Я буду рад предоставить более подробную информацию.

Редактировать1: Больше объяснений

Строки представляют порядок, в котором должны быть заняты классы. Если у класса есть предварительное условие, предварительное условие должно быть взято первым. то есть. если ввод

"CSE111: CSE110 MATH101"
"CSE110:"

Класс CSE111 имеет предварительное условие CSE110 MATH101. Поэтому мне нужно рассмотреть сначала CSE1110 (без предварительных требований) - MATH101 ((без предварительных требований), а затем CSE111. (Дальнейшие связи могут быть разбиты в алфавитном порядке.) Я надеюсь, что это помогает ..

1 Ответ

6 голосов
/ 22 июня 2010

Я надеюсь, что получил его сейчас: Для строки вида A: B C D курс A имеет B, C и D в качестве предварительных условий.

В этом случае выхотите сопоставить курс с его предпосылками, например:

typedef std::set<std::string> CourseSet;
typedef std::map<std::string, CourseSet> Prerequisites;

Теперь вы можете заполнить Prerequisites токенизацией, используя первую часть в качестве ключа и CourseSet в качестве значения.

Поскольку кажется, что вы просто хотите получить один из возможных заказов для всех курсов на входе, вы можете выполнить следующее:

  • выполнить предварительные условия для курсов (т. Е. Включить курсыони косвенно зависят от
  • сейчас a>b, если a имеет b в качестве обязательного условия
  • , если b не имеет a в качестве обязательного условия, например, лексикографическийзаказ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...