(每日一题)活动安排———<贪⼼-区间>

1. 题⽬链接:AB31活动安排

2. 题⽬描述:

(每日一题)活动安排———<贪⼼-区间>_第1张图片

3. 解法:

算法思路:

区间问题的贪⼼:

排序,然后分情况讨论,看看是合并还是求交集  

C++算法代码: 

#include 
#include 
#include 
using namespace std;
int main()
{
    //初始化
    int n;
    cin>>n;
    vector>temp;
    int a,b;
    for(int i=0;i>a>>b;
        temp.push_back({a,b});    
    }
    //排序
    sort(temp.begin(),temp.end());
    //判断+计数
    int ret=1,left=temp[0].second;
    for(int i=1;i=left)
        {
            left=temp[i].second;
            ret++;
        }
    }
    //输出
    cout<

Java算法代码:

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息 
public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[][] arr = new int[n][2];
		for (int i = 0; i < n; i++)
		{
			arr[i][0] = in.nextInt();
			arr[i][1] = in.nextInt();
		}
		Arrays.sort(arr, (a, b) ->
		{
			return a[0] <= b[0] ? -1 : 1;
		});
		int ret = 0, r = arr[0][1];
		for (int i = 1; i < n; i++)
		{
			if (arr[i][0] < r) // 有重叠 
			{
				r = Math.min(r, arr[i][1]);
			}
			else // 没有重叠 
			{
				ret++;
				r = arr[i][1];
			}
		}
		System.out.println(ret + 1);
	}
}

你可能感兴趣的:(每日一题,算法,每日一题,考研,c++,数据结构,排序算法)