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]);
En caso contrario, ordena realmente y a partir de ahí selecciona la secuencia más larga de números idénticos.
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]);
De lo contrario, realmente - ordenar y desde allí seleccionar la secuencia más larga de idénticos.
Así que "si no" es una matriz de números de cualquier tipo. Así que es una función de plantilla. Bueno y ordenar y buscar.
if(c>=cd) { // ищем первое большее ">" или максимально большее ">=" при одинаковом количестве cd=c; // количество совпадений res=Mas[i]; // число } c=0; } return( res /*cd*/); // число|количество }
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
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*/); // число|количество
}