_(:から」∠)_
1の#include <cstdioを> 2の#include <iostreamの> 3の#include <ctimeの> 4の#include <WINDOWS.H> 5の#include <アルゴリズム> 6の#include <fstreamの> 7 使って 名前空間STDを、 8 構造体活性 9 { 10 INT ありません。 11 int型開始。 12 int型の仕上げ。 13 }。 14 ブール CMP(CONST活動&X、CONST活動&Y) 15 { 16 リターンx.finish <y.finish; // 小から大へ、<、>行に降順 。17 } 18は、 INT greedySelector(INT M、INT液[]、構造体活性アクティビティ[]){ 19 INTの数= 。1 ; 20 ソリューション[ 0 ] = 1 ; 21れる int型 I、J = 0、カウンタ= 1 ; 22である ため(I = 1 ; Iは<M、Iは++ ) 23である { 24 IF(活動[I] .start> = アクティビティ[ J] .finish) 25 { 26 溶液[I] = 1 。 27 J = I; 28 カウンタ++ ; 29 } 30 他 31 溶液[I] = 0 ; 32 } 33 COUT << " の活動量がある:" <<カウンタ<< ENDL。 34 COUT << 「溶液であります:」。 35 のために(i = 0 ; iは<M; iは++ ) 36 { 37 もし(溶液[I] == 1 ) 38 { 39 COUT <<活性[I] .NO << " " 。 40 } 41 } 42 リターンカウンタ; 43 } 44 INTメイン(ボイド) 45 { 46 LARGE_INTEGER nFreq。 47 LARGE_INTEGER nBeginTime。 48 LARGE_INTEGER nEndTime。 49 ofstreamのをFOUT。 50 にsrand((符号なし整数)時間(NULL))。 51 int型M、I、J、T。 52 二重のコスト; 53 裁判所未満<< 「あなたがプログラムを実行する回数を入力してください:」; 54 cinを>> トン。 55 fout.open(" activity.txt " 、イオス::アプリ)。 56 もし(!FOUT){ 57 CERR << " ファイルを開くことができません'activity.txt' " << てendl; 58 リターン - 1 。 59 } 60 fout.setf(ios_base :: 固定、ios_base :: floatfield)。 61 のための(j = 0 ; J <T J ++ ) 62 { 63 COUT << " ------------------ " << J + 1 << 」番目のテスト----------------- 「 << てendl; 64 、M = 1つの +ランド()%100000 。 65 FOUT << M << " " 。 66 INTの溶液[M]。 67 活性の活性[M]。 68 のために(i = 0 ; iは<M; iは++ ) 69 { 70 活性[I] .NO = I + 1 。 71 活性[I] .start = 1つの +ランド()%千。 72 一方、(1 ) 73 { 74 活性[I] .finish = 1つの +ランド()%10000 。 75 であれば(アクティビティ[I] .finish>活性[I] .start)ブレーク。 76 } 77 } 78 QueryPerformanceFrequency(&nFreq)。 79 QueryPerformanceCounterの(&nBeginTime); 80 ソート(活動、活動+ M、CMP)。 81 greedySelector(M、溶液、活性)。 82 QueryPerformanceCounterの(&nEndTime)。 83 費用=(ダブル)(nEndTime.QuadPart - nBeginTime.QuadPart)/(ダブル)nFreq.QuadPart。 84 FOUT <<コスト<< てendl; 85 裁判所未満<< " \ nの時間を実行すると、次のとおりです。" <<コスト<< " S " << てendl; 86 } 87 fout.close()。 88の coutの<<endl; 89 裁判所未満<< " 成功!" << てendl; 90 リターン 0 ; 91 }