什麼是貪心算法?
貪心算法,這個貪心到底是什麼意思
貪心指目光短淺,只看到當前這一步的最優決策,而不考慮以後的決策。這樣的算法只在特定的問題下是正確的。
哪些常見算法屬於貪婪算法?
顯然KMP和FLOYD算法不是貪心算法,FLOYD算法是使用了類似於動態規劃的思想,而KMP算法則是對串的前綴進行去處理得到所有可能出現匹配的位置從而減少不必要的位移。貪心算法可能還有很多,但是一般能用到的可能只有這些。在確定一個問題是否能用貪心來解決的時候應該線能夠證明在這裡使用貪心算法的正確性(詳見算法導論)
求解一貪心算法問題
最快回答那個不懂別亂說,別誤人子弟。
這題標準的貪心算法,甚至很多時候被當做貪心例題
要求平均等待時間,那麼就得用 總等待時間 / 人數
所以只用關心總等待時間,
如果數據大的在前面,那麼後面必然都要加一次這個時間,所以按從小到大排。
給你寫了個,自己看吧。
#include "stdafx.h"
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n;
float arr[105];
cin >> n;
for(int i = 0; i < n; ++i)
cin >> arr[i];
sort(arr, arr+n);
int tnow = 0;
int tmax = 0;
for(int i = 0; i < n; ++i)
{
tmax += tnow;
tnow += arr[i];
}
for(int i = 0; i < n; ++i)
{
printf("%0.2f ", arr[i]);
}
cout << endl;
printf("%0.2f\n",tmax / (float)n);
return 0;
}
貪心算法的基本思想是什麼?
自己利益最大
貪心算法是什麼?求教學,c語言
www.jb51.net/article/71144.htm,裡面講得比較詳細
貪心算法的基本要素是什麼,並簡單解釋其含義
您好,我看到您的問題很久沒有人來回答,但是問題過期無人回答會被扣分的並且你的懸賞分也會被沒收!所以我給你提幾條建議:
一,你可以選擇在正確的分類下去提問,這樣知道你問題答案的人才會多一些,回答的人也會多些。
二,您可以到與您問題相關專業網站論壇裡去看看,那裡聚集了許多專業人才,一定可以為你解決問題的。
三,你可以向你的網上好友問友打聽,他們會更加真誠熱心為你尋找答案的,甚至可以到相關網站直接搜索.
四,網上很多專業論壇以及知識平臺,上面也有很多資料,我遇到專業性的問題總是上論壇求解決辦法的。
五,將你的問題問的細一些,清楚一些!讓人更加容易看懂明白是什麼意思!
謝謝採納我的建議! !
貪心算法的特性
貪婪算法可解決的問題通常大部分都有如下的特性:⑴隨著算法的進行,將積累起其它兩個集合:一個包含已經被考慮過並被選出的候選對象,另一個包含已經被考慮過但被丟棄的候選對象。⑵有一個函數來檢查一個候選對象的集合是否提供了問題的解答。該函數不考慮此時的解決方法是否最優。⑶還有一個函數檢查是否一個候選對象的集合是可行的,也即是否可能往該集合上添加更多的候選對象以獲得一個解。和上一個函數一樣,此時不考慮解決方法的最優性。⑷選擇函數可以指出哪一個剩餘的候選對象最有希望構成問題的解。⑸最後,目標函數給出解的值。⑹為了解決問題,需要尋找一個構成解的候選對象集合,它可以優化目標函數,貪婪算法一步一步的進行。起初,算法選出的候選對象的集合為空。接下來的每一步中,根據選擇函數,算法從剩餘候選對象中選出最有希望構成解的對象。如果集合中加上該對象後不可行,那麼該對象就被丟棄並不再考慮;否則就加到集合裡。每一次都擴充集合,並檢查該集合是否構成解。如果貪婪算法正確工作,那麼找到的第一個解通常是最優的。