1210: 东东的女朋友(二)
题目描述
我们已经知道了,东东有很多的女朋友。每个女朋友都要东东陪她们,但是现在东东的女朋们每天也都需要上课,所以不可能一整天都有时间。现在的问题是,给出东东女朋友每一天的空闲时间,问东东最少用多少天可以陪每个女朋友至少一次。因为东东还要留很多时间来学习算法呢。当然当东东在陪一个女朋友时间段内不可以同时去陪另一个女朋友。
输入
第一个数t表示有t组测试实例,每组测试实例的第一个数n(n<=100)表示东东有n个女朋友。接下来的n行,每行有两个数s,e表示东东的女朋友的空闲时间的起始时间和终止时间(0 < s<=e<=24)。
输出
输出东东所需要的最少的天数来陪他的女朋友们
样例输入 Copy
1
3
1 8
2 3
4 7
样例输出 Copy
2
声明一个长度为24的数组,然后把所有出现过的区间内的数一次次累加,最后求出数组的最大值就是答案
c++代码:
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
int s,e,n;
int a[25];
cin>>t;
while(t--)
{
cin>>n;
memset(a,0,sizeof(a));//一定要有
for(int i=0;i<n;i++)
{
cin>>s>>e;
for(int j=s;j<=e;j++)
{
a[j]++;
}
}
int m=-1;
for(int k=0;k<=24;k++)
m=max(m,a[k]);
cout<<m<<endl;
}
return 0;
}
Java代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t,n,i,j,s,e,k;
t=sc.nextInt();
for(i=0;i<t;i++)
{ int a[]=new int[25];
n=sc.nextInt();
for(j=0;j<n;j++)
{
s=sc.nextInt();
e=sc.nextInt();
for(k=s;k<=e;k++)
a[k]++;//出现时间累加
}
int m=-1;
for(int d=0;d<=24;d++)
m=Math.max(a[d], m);
System.out.println(m);
}
}
}