Жадность — это алгоритмическая парадигма, которая создает решение по частям, всегда выбирая следующую часть, которая предлагает наиболее очевидную и немедленную выгоду. Жадные алгоритмы используются для задач оптимизации. Задача оптимизации может быть решена с помощью Greedy, если задача обладает
следующим свойством: На каждом шаге мы можем сделать выбор, который выглядит наилучшим в данный момент, и мы получим оптимальное решение полной
задачи. .
Рассмотрим следующие 6 действий.
start[] = {1, 3, 0, 5, 8, 5};
finish[] = {2, 4, 6, 7, 9, 9};
Максимальный набор действий, которые могут быть выполнены
одним человеком, составляет {0, 1, 3, 4}.
Здесь,
я=0 — — — старт[я]=1
j=1, старт[j] › финиш[i], 3›2, i=1
j=2, 0>4 возвращает ложь
j=3, 5>4, возвращает true, i=3
j=4, 8›7, возвращает true, i=4
j=5, 5›9 возвращает ложь.
Выход: 0, 1, 3, 4
Код:
#include<stdio.h> void activitySelection(int s[], int f[], int n) { int i=0, j; printf(“%d “,i); for(j=1;j<n;j++) { if(s[j]>f[i]) { printf(“%d “,j); i=j; } } } int main() { int s[]={1,3,0,5,8,5},f[]={2,4,6,7,9,9}, n; n=sizeof(s)/sizeof(s[0]); activitySelection(s,f,n); return 0; }