文章目录
一、题目二、算法思想三、代码
一、题目
二、算法思想
存储结构使用的是结构体数组,每一个结构体中存放着每一个宣讲会的开始时间及其结束时间。 根据题目的提示,我们可以使用双重循环,对这些宣讲会根据结束时间进行冒泡升序排列。 需要注意的是位于末尾的第n个宣讲会在i为n-1时就已经被判断过了,所以第n个宣讲会不需要参与排序。
在统计可参加的宣讲会数量时,可以定义两个变量。 一个用于统计数量,一个用于存储上一个宣讲会的结束时间。 默认第一个宣讲会是不需要比较的,所以可以先初始化一下num和last_time。
之后的统计从第2个宣讲会开始到第n个,如果宣讲会的开始时间大于等于上一个宣讲会结束时间时, 就表示小花花可以参加此宣讲会,然后就更新last_time和num
三、代码
#include<iostream>
#include<stdlib.h>
using namespace std
;
struct metting
{
int start_time
;
int end_time
;
}met
[1002];
int main()
{
int n
;
int i
,j
;
int num
;
int last_time
;
cin
>>n
;
for(i
=1;i
<=n
;i
++)
cin
>>met
[i
].start_time
>>met
[i
].end_time
;
for(i
=1;i
<=n
;i
++)
{
for(j
=1;j
<n
;j
++)
{
metting tmp
= met
[j
];
if(met
[j
].end_time
>met
[j
+1].end_time
)
{
met
[j
] = met
[j
+1];
met
[j
+1] = tmp
;
}
}
}
num
= 1;
last_time
= met
[1].end_time
;
for(i
=2;i
<=n
;i
++)
{
if(met
[i
].start_time
>=last_time
)
{
num
++;
last_time
= met
[i
].end_time
;
}
}
cout
<<num
<<endl
;
return 0;
}