最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++貪心算法實現活動安排問題(實例代碼)

 更新時間:2019年11月04日 11:44:23   作者:Weisswire  
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。這篇文章主要介紹了C++貪心算法實現活動安排問題,需要的朋友可以參考下

貪心算法

貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優(yōu)上加以考慮,他所做出的是在某種意義上的局部最優(yōu)解。

貪心算法不是對所有問題都能得到整體最優(yōu)解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性,即某個狀態(tài)以前的過程不會影響以后的狀態(tài),只與當前狀態(tài)有關。

具體代碼如下所示:

#include <cstdio>
#include <iostream>
#include <ctime>
#include <windows.h>
#include <algorithm>
#include <fstream>
using namespace std;
struct activity
{
  int no;
  int start;
  int finish;
};
bool cmp(const activity &x, const activity &y)
{
  return x.finish<y.finish;//從小到大排<,若要從大到小排則>
}
int greedySelector(int m,int solution[],struct activity activity[]){
  int number = 1;
  solution[0] = 1;
  int i,j = 0,counter = 1;
  for(i = 1;i < m ;i++)
  {
    if(activity[i].start >=activity[j].finish)
    {
      solution[i] = 1;
      j = i;
      counter++;
    }
    else
      solution[i] = 0;
  }
  cout << "The amount of activities is:"<<counter<<endl;
  cout << "The solution is:";
  for(i = 0 ;i < m ;i++)
  {
    if (solution[i] == 1)
    {
      cout << activity[i].no <<" ";
    }
  }
  return counter;
}
int main(void)
{
  LARGE_INTEGER nFreq;
  LARGE_INTEGER nBeginTime;
  LARGE_INTEGER nEndTime;
  ofstream fout;
  srand((unsigned int)time(NULL));
  int m,i,j,t;
  double cost;
  cout << "Please enter the number of times you want to run the program:";
  cin >> t;
  fout.open("activity.txt",ios::app);
  if(!fout){
    cerr<<"Can not open file 'activity.txt' "<<endl;
    return -1;
  }
  fout.setf(ios_base::fixed,ios_base::floatfield);    //防止輸出的數字使用科學計數法
  for (j = 0;j < t;j++)
  {
    cout << "——————————————————The "<< j + 1 << "th test —————————————————"<<endl;
    m = 1 + rand()%100000;
    fout<<m<<",";
    int solution[m];
    activity activity[m];
    for( i = 0;i < m;i++)
    {
      activity[i].no = i+1;
      activity[i].start = 1 + rand()%1000;
      while(1)
      {
        activity[i].finish = 1 + rand()%10000;
        if(activity[i].finish > activity[i].start) break;
      }
    }
    QueryPerformanceFrequency(&nFreq);
    QueryPerformanceCounter(&nBeginTime);
    sort(activity,activity+m,cmp);
    greedySelector(m,solution,activity);
    QueryPerformanceCounter(&nEndTime);
    cost=(double)(nEndTime.QuadPart - nBeginTime.QuadPart) / (double)nFreq.QuadPart;
    fout << cost << endl;
    cout << "\nThe running time is:" << cost << " s" << endl;
  }
  fout.close();
  cout << endl << endl;
  cout << "Success!" << endl;
  return 0;
}

總結

以上所述是小編給大家介紹的C++貪心算法實現活動安排問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • C語言詳細講解qsort函數的使用

    C語言詳細講解qsort函數的使用

    排序方法有很多種:選擇排序,冒泡排序,歸并排序,快速排序等。看名字都知道快速排序是目前公認的一種比較好的排序算法。因為他速度很快,所以系統(tǒng)也在庫里實現這個算法,便于我們的使用。這就是qsort函數
    2022-04-04
  • C++ 中回文數判斷簡單實例

    C++ 中回文數判斷簡單實例

    這篇文章主要介紹了C++ 中回文數判斷簡單實例的相關資料,需要的朋友可以參考下
    2017-05-05
  • C++中COM組件初始化方法實例分析

    C++中COM組件初始化方法實例分析

    這篇文章主要介紹了C++中COM組件初始化方法,涉及C++中COM組件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • C++實現俄羅斯方塊(linux版本)

    C++實現俄羅斯方塊(linux版本)

    這篇文章主要為大家詳細介紹了linux版本C++實現俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Qt實現簡易計時器的示例代碼

    Qt實現簡易計時器的示例代碼

    計時器實現四個功能:開始計時、停止計時、暫停計時以及打點。當點擊暫停時,開始按鈕和停止按鈕無法點擊。當點擊停止時,開始按鈕和暫停按鈕無法點擊,此時停止按鈕變?yōu)榍辶恪1疚膶⒂肣t實現這樣的一個計時器,需要的可以參考一下
    2022-06-06
  • 舉例理解C語言二維數組的指針指向問題

    舉例理解C語言二維數組的指針指向問題

    這篇文章主要介紹了C語言二維數組的指針指向問題,文中不建議用二級指針來訪問二維數組,需要的朋友可以參考下
    2015-12-12
  • C/C++ 中的預處理器指令及用法詳解

    C/C++ 中的預處理器指令及用法詳解

    本文介紹了C/C++預處理器指令的用途和示例,包括包含頭文件、定義宏、條件編譯、取消宏定義和#pragma指令等,結合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 貪吃蛇C語言代碼實現(難度可選)

    貪吃蛇C語言代碼實現(難度可選)

    這篇文章主要為大家詳細介紹了貪吃蛇C語言代碼實現,游戲難度可供選擇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • linux內核select/poll,epoll實現與區(qū)別

    linux內核select/poll,epoll實現與區(qū)別

    這篇文章主要介紹了linux內核select/poll,epoll實現與區(qū)別,需要的朋友可以參考下
    2016-11-11
  • MATLAB實現五子棋游戲(雙人對戰(zhàn)、可悔棋)

    MATLAB實現五子棋游戲(雙人對戰(zhàn)、可悔棋)

    這篇文章主要為大家詳細介紹了MATLAB實現五子棋游戲,可以進行雙人對戰(zhàn)、也可悔棋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論

奇台县| 修水县| 凤冈县| 旬阳县| 胶南市| 中牟县| 固始县| 镇江市| 读书| 扎囊县| 班戈县| 利辛县| 深水埗区| 麻城市| 洛扎县| 镶黄旗| 巧家县| 乐都县| 格尔木市| 房山区| 武强县| 桐庐县| 瑞安市| 上犹县| 绍兴市| 明光市| 大庆市| 图片| 武安市| 柯坪县| 康马县| 金乡县| 黑山县| 且末县| 尉氏县| 旬邑县| 广安市| 宜春市| 乐都县| 颍上县| 上林县|