1.Słaby przywódca ciągu
Słabym przywódcą ciągu jest element, który występuje w nim więcej niż n/k razy (dla ustalonego k). Jak wykorzystać algorytm dla przywódcy (druga transformacja) do efektywnego wyznaczenia jednego ze słabych przywódców?
Ta druga transformacja
licz=0;
for(i=0; i<n; ++i){
if(licz==0){
p=tab[i];
++licz;
}else if (p==tab[i]){
++licz;
}else{
--licz;
}
}
i to
#include<iostream>
using namespace std;
int lds(int x[],int n,int max){
int i,k,best=0;
if (x[0]>=max) return 0;
if (n==1) return 1;
for (i=1; i<n; ++i){
k = lds(x+i,n-i,x[0]);
if (best < k){
best = k;
}
}
return best+1;
}
int main(){
int n, i, tab[1000], max;
cin >> n;
max = 0;
++n;
for (i=1; i<n; ++i){
cin >> tab[i];
if (max < tab[i]){
max = tab[i];
}
}
tab[0] = max+1;
cout << lds(tab,n,max+2)-1;
return 0;
}
i nie wiem jak to zrobić z tym przywódcą
Wytłumaczy ktoś jak podejść do tego bo nie rozumiem