貪心算法--活動安排問題

#include <bits/stdc++.h>
using namespace std;

struct act{
	int start;//開始時間 
	int end;//結束時間 
	int tag;//用於標記是第幾個活動 
}acts[100];

bool cmp(const act &a,const act &b){
	return a.end<b.end;
}
/*
測試數據:
4
1 5
3 4
1 2
5 7

*/ 
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>acts[i].start>>acts[i].end;
	}
	for(int i=0;i<n;i++){
		acts[i].tag=i+1;
	}
	sort(acts,acts+n,cmp);//按活動結束時間排序 
	int j=0;
	int A[100];//用於存放活動安排的順序 
	A[0]=acts[0].tag;
	for(int i=1;i<n;i++){
		if(acts[i].start>acts[j].end){
			A[i]=acts[i].tag;
			j++;
		}else{
			A[i]=-1;
		}
	}
	cout<<"活動安排順序爲:";
	for(int i=0;i<n;i++){
        if(A[i]>0){
        	cout<<A[i]<<" ";
		}
    } 
	return 0;
}

解決了結束時間不規律的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章