Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 142
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Nope :)))
1,1,1,2,3,3,2,1,4,4,5
é o número de números da mesma cor.
Alexey Kozitsyn quis dizer: em uma matriz ordenada.Número máximo de valores idênticos em uma seqüência?
1,1,1,2,3,3,2,1,4,4,5
Classificação:
1,1,1,1,1, 1,2, 2, 3,3,4,4,4,5
A saída são 4 valores correspondentes de números (o número 5 em uma única instância não é um valor correspondente)
Array:
1,1,1,2,3,3,2,1,4,4,5
Ordenar por:
1,1,1, 1,2, 2, 3,3,4,4,4,5
A saída são 4 valores correspondentes de números (o número 5 em uma única cópia não corresponde a nada)
Então soaria algo como: determinar o número de números em uma seqüência que tem duplicatas.
Nenhum dos dois.
Existem quatro números desconhecidos conhecidos. Você precisa encontrar o número de números repetidos, como no exemplo do meu primeiro posto.
Se a ordem não for importante, os números são inteiros e o intervalo é conhecido, então você pode contar para O(tamanho) simplesmente criando um conjunto 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]);
Se a ordem não for importante, os números são inteiros e o intervalo é conhecido, então é possível contar para O(tamanho) simplesmente criando um conjunto 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]);
Talvez. Não se trata do texto no momento, mas sim da solução. Estou aqui sentado a resolver...
Isso é estranho.
Sua opção sempre dá 1. Leva mais tempo para descobrir do que para criar o seu próprio. Isso é toda a estranheza ;)
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 também parece ser:
{
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*/); // число|количество
}