我正在学习编码并找到了有趣的任务,但我不知道从哪里开始解决它。所以我有一个文件,其中包含一些标题和注释,需要放在正确的标题下。因此,输入的第一行包含一个数字N,用于确定标题的数量。每行以唯一的文章ID(整数)开头,后跟引号中的标题。没有更多标题后,会给出评论。在开头有标题ID和注释(一个单词),但注释可能会重复相同的ID。所以这是一个文件的结构:
<N>
<ID1> "<Title1>"
...
<IDN> "<TitleN>"
<ID1> <Comment1>
...
<IDK> <CommentK>
现在在输出文件中,每个标题都有两行 - 第一行用于标题,第二行用于注释。标题必须按升序排列。注释应该是相反的顺序(开头的最新注释)输出文件的结构:
<Title1>
<Comment11> ... < CommentK1>
...
<TitleN>
<Comment1N> ... < CommentLN>
示例:
input:
3
1 "This is some title"
3 "Another title"
2 "And one more"
1 COmment
1 Another
3 Great
2 Awesome
3 Lucky
2 Stanley
output
This is some title
Another COmment
And one more
Stanley Awesome
Another Title
Lucky Great
我现在不知道从哪里开始..我应该使用数组将数据保存在内存中,然后尝试以正确的模式对其进行排序吗?或者将文本文件加载到数据结构中是否更好;在这种情况下链表?也许有人可以指导我如何完成这项任务。 (我不要求为我编码,只是引导我或给出一些算法,我将非常感激)。谢谢!
答案 0 :(得分:1)
我假设您知道如何使用C ++读取文件,如果没有,请查看它,例如tutorial。
对于排序部分,您可以使用STL container 存储ID。我建议使用id作为键,字符串作为值的映射。
地图的优点是它已经排序(升序)。
如果您使用其他容器,如果您想了解它们的工作原理,则应该查看排序算法。例如,主要的冒泡排序,选择排序,快速排序或合并排序。
但是,如果您想在没有任何实现的情况下进行排序,请查看this。
这并没有为您的问题提供具体的答案,但它可以帮助您开始。
[UPDATE] 我没有正确阅读,但我还没有看到多行可能具有相同的ID。地图不一定是最合适的容器。