Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 142
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
No :)))
1,1,1,2,3,3,2,1,4,4,5
è il numero di numeri dello stesso colore.
Alexey Kozitsyn intendeva: in un array ordinato.Numero massimo di valori identici in una sequenza?
1,1,1,2,3,3,2,1,4,4,5
Ordinamento:
1,1,1,1, 1,2, 2, 3,3,4,4,5
L'output è 4 valori di numeri corrispondenti (il numero 5 in una singola copia non è un valore corrispondente)
Array:
1,1,1,2,3,3,2,1,4,4,5
Ordina per:
1,1,1, 1,2, 2, 3,3,4,4,5
L'output è 4 valori di numeri corrispondenti (il numero 5 in una singola copia non corrisponde a nulla)
Allora suonerebbe qualcosa come: determinare il numero di numeri in una sequenza che hanno duplicati.
Nessuno dei due.
Ci sono quattro numeri sconosciuti conosciuti. Devi trovare il numero di numeri ripetuti come nell'esempio del mio primo post.
Se l'ordine non è importante, i numeri sono interi e l'intervallo è noto, allora si può contare per O(size) semplicemente creando un array di contatori.
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]);
Se l'ordine non è importante, i numeri sono interi e l'intervallo è noto, allora si può calcolare per O(size) semplicemente creando un array di contatori.
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]);
Forse. Al momento non si tratta della formulazione, ma della soluzione. Sono seduto qui a risolvere...
Strano.
La tua opzione dà sempre 1. Ci vuole più tempo per capirlo che per inventarlo. Questa è tutta la stranezza ;)
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));
}
Anche questo sembra esserlo:
{
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*/); // число|количество
}