Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 142
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
No :)))
1,1,1,2,3,3,2,1,4,4,5
es el número de números del mismo color.
Alexey Kozitsyn quiso decir: en una matriz ordenada.¿Número máximo de valores idénticos en una secuencia?
1,1,1,2,3,3,2,1,4,4,5
Clasificación:
1,1,1,1, 1,2, 2, 3,3,4,4,5
El resultado son 4 valores coincidentes de números (el número 5 en una sola copia no es un valor coincidente)
Array:
1,1,1,2,3,3,2,1,4,4,5
Ordenar por:
1,1,1, 1,2, 2, 3,3,4,4,5
La salida son 4 valores de números que coinciden (el número 5 en una sola copia no coincide con nada)
Entonces sonaría algo así como: determinar el número de números de una secuencia que tienen duplicados.
Tampoco.
Hay cuatro números desconocidos conocidos. Tienes que encontrar el número de números repetidos como en el ejemplo de mi primer post.
Si el orden no es importante, los números son enteros y el rango es conocido, entonces se puede contar para O(size) simplemente creando una matriz de contadores.
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]);
Si el orden no es importante, los números son enteros y el rango es conocido, entonces se puede calcular para O(size) simplemente creando una matriz de contadores.
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]);
Tal vez. En este momento no se trata de la redacción, sino de la solución. Estoy sentado aquí resolviendo...
Qué raro.
Su opción siempre da 1. Se tarda más en averiguar que en idear una propia. Esa es toda la rareza ;)
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));
}
Este también parece serlo:
{
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*/); // число|количество
}