Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 142
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nein :)))
1,1,1,2,3,3,2,1,4,4,5
ist die Anzahl der Zahlen der gleichen Farbe.
Alexey Kozitsyn meinte: in einem sortierten Array.Maximale Anzahl von identischen Werten in einer Sequenz?
1,1,1,2,3,3,2,1,4,4,5
Sortierung:
1,1,1,1, 1,2, 2, 3,3,4,4,5
Die Ausgabe sind 4 übereinstimmende Zahlenwerte (die Zahl 5 in einer einzelnen Instanz ist kein übereinstimmender Wert)
Array:
1,1,1,2,3,3,2,1,4,4,5
Sortieren nach:
1,1,1, 1,2, 2, 3,3,4,4,5
Die Ausgabe besteht aus 4 übereinstimmenden Zahlenwerten (die Zahl 5 in einer einzigen Kopie stimmt mit nichts überein)
Dann würde es etwa so klingen: Bestimme die Anzahl der Zahlen in einer Folge, die Duplikate haben.
Weder noch.
Es sind vier unbekannte Nummern bekannt. Sie müssen die Anzahl der sich wiederholenden Zahlen ermitteln, wie in dem Beispiel in meinem ersten Beitrag.
Wenn die Reihenfolge unwichtig ist, die Zahlen ganze Zahlen sind und der Bereich bekannt ist, dann kann man für O(size) zählen, indem man einfach ein Array von Zählern erstellt.
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
Wenn die Reihenfolge unwichtig ist, die Zahlen ganze Zahlen sind und der Bereich bekannt ist, dann kann man für O(size) einfach ein Array von Zählern erstellen.
ArrayResize(counter,100);
ArrayInitialize(counter,0);
for(int i=ArraySize(source)-1;i>=0;i--) {
counter[source[i]]++;
}
int pos=ArrayMaximum(counter);
PrintFormat("Чаще всего встречалось число %d, аж %d раз",pos,source[pos]);
Vielleicht. Im Moment geht es nicht um den Wortlaut, sondern um die Lösung. Ich sitze hier und löse...
Das ist merkwürdig.
Ihre Option gibt immer 1 aus. Es dauert länger, das herauszufinden, als es sich selbst auszudenken. Das war's mit den Merkwürdigkeiten ;)
int Strange( const T &InArray[] )
{
int Res = 1;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++)
{
if (Array[i - 1] != Array[i])
{
if (Tmp > Res)
Res = Tmp;
Tmp = 0;
}
Tmp++;
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2};
Print(Strange(Array));
}
Dies scheint auch so zu sein:
{
int Arr[]={1, 2, 4, 4, 2, 1, 2, 2, 1, 4, 1, 4, 3, 3, 3, 4, 3, 3, 1, 3, 4, 3, 3};
Comment( GetM(Arr) );
}
int GetM(int &Mas[])
{
int c=0,cd=0,res=-1;
ArraySort(Mas);
int ArrSize= ArraySize(Mas);
for(int i=0; i<ArrSize; i++) {
for(int x=i; x<ArrSize; x++) {
if(Mas[i]==Mas[ArrayMinimum(Mas,WHOLE_ARRAY,x)]) c++;
}
if(c>=cd) { // ищем первое большее ">" или максимально большее ">=" при одинаковом количестве
cd=c; // количество совпадений
res=Mas[i]; // число
}
c=0;
}
return( res /*cd*/); // число|количество
}