活動のためのC ++貪欲アルゴリズム実装の手配

_(:から」∠)_

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 }

 

おすすめ

転載: www.cnblogs.com/Jesse-Cavendish/p/11791036.html