问题描述(回忆版本不太准确):
某地n个城市按照1-n编号,编号越大的城市地势越高。
列车从地势高的车站m开往地势低的车站k, 途径m-1, m-2, m-3,…,k+1, k这么多的车站(包含终点,不包含起点)。
现请读者输入x条线路的重点和起点,输出其中列车停靠次数最多的车站被停靠了多少次。
示例输入:
2
1 5
4 9
示例输出:
2
问题分析:
1.这个问题就是听起来复杂一点的计数问题。
2.示例分析为:
2(总共有2条线路)
1 5(起点5, 终点1, 途经4 3 2 1)
4 9(起点9, 终点4, 途经8 7 6 5 4)
可见4站台被停靠的次数最多,总共有2次。
代码展示:
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int, int> count;
map<int, int>::const_iterator it;
int n, a, b, max = 0;
while (cin >> n)
{
if(n <= 0)
;
else
{
for (int i = 0; i < n; i++)
{
cin >> a >> b;
//利用键值对计数,能够节省空间
while (a != b)
count[a++]++;
}
//遍历键值对找出计数的最大值
it = count.begin();
while (it != count.end())
{
max = max > it->second ? max : it->second;
it++;
}
cout << max << endl;
}
}
return 0;
}