输入是string [],如下所示.
"CSE111:CSE110 MATH101"
"CSE110:"
我需要根据一些逻辑来排序字符串.例如,我的输出应该是string[]类似的
"CSE110", "MATH122", "CSE111"
我的问题是
string[]第二个输出字符串等.例如:
输入:
"CSE111:CSE110 MATH101"
"CSE110:"
如果选择CSE110作为输出中的第一个字符串,那么当我通过输入字符串[]扫描第二个字符串作为输出的一部分时,我不应该考虑CSE110.
我怎样才能做到这一点?我期待的答案是这样的:
希望我的问题很清楚.我很乐意提供更多细节.
编辑1:更多解释
字符串表示类需要采用的顺序.如果一个班级具有先决条件,则必须首先采取先决条件.即.如果输入是
"CSE111: CSE110 MATH101"
"CSE110:"
Run Code Online (Sandbox Code Playgroud)
CSE111类具有CSE110 MATH101的先决条件.所以我需要考虑第一个CSE1110(无先决条件) - MATH101((无先决条件),然后是CSE111.(进一步的关系可以按字母顺序排除.)我希望这有助于..
我希望得到它现在:对于具有以下形式的字符串A: B C D,过程中A有B,C和D作为其先决条件.
在这种情况下,您需要从课程到其先决条件的映射,例如:
typedef std::set<std::string> CourseSet;
typedef std::map<std::string, CourseSet> Prerequisites;
Run Code Online (Sandbox Code Playgroud)
现在,您可以Prerequisites使用第一部分作为键并使用CourseSet值作为标记来填充.
由于您似乎只想要输入中所有课程的可能订单之一,您可以执行以下操作:
a>b如果a有b先决条件b没有a作为先决条件使用,例如词典顺序