會場安排問題

題目描述:

學校的小禮堂每天都會有許多活動,有時間這些活動的計劃時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排一個活動。現在小劉有一些活動計劃的時間表,他想儘可能的安排更多的活動,請問他該如何安排。

輸入:

第一行是一個整型數m(m<100)表示共有m組測試數據。
每組測試數據的第一行是一個整數n(1<n<10000)表示該測試數據共有n個活動。
隨後的n行,每行有兩個正整數Bi,Ei(0<=Bi,Ei<10000),分別表示第i個活動的起始與結束時間(Bi<=Ei)

輸出:

對於每一組輸入,輸出最多能夠安排的活動數量。
每組的輸出佔一行

AC代碼如下:

#include<iostream>
#include<algorithm>
using namespace std;
struct T
{
int begin,end;       //定義結構體成員變量
};
bool cmp(T a, T b)
{
return a.end < b.end ;
}
int main()
{
	int i;
	int n,m,count;
    struct T a[10000];    //聲明一個結構體數組
    cin >> n;
while(n--)
{
	cin >> m;
for( i=0; i<m; i++)
{
	cin >> a[i].begin >> a[i].end;
}
    sort(a,a+m,cmp);
    count=1;
    int t=0;
for(int i=0; i<m; i++)
{
	if(a[t].end < a[i].begin)
	{
		count++;
        t=i;
}

}
cout << count << endl;
}

return 0;
}
運行結果如下:

思路:其實考查的是利用sort函數對結構體二維數組的排序


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