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*/ ); // число|количество }
아니요 :)))
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
같은 색의 숫자의 수.
Alexey Kozitsyn 은 다음을 의미했습니다: 정렬된 배열. 시퀀스에서 동일한 값의 최대 수는?
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
정렬:
1 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5
우리는 출력 4에서 일치하는 숫자 값을 얻습니다(단일 사본의 숫자 5는 아무 것도 일치하지 않는 값입니다)
정렬:
1 , 1 , 1 , 2 , 3 , 3 , 2 , 1 , 4 , 4 , 5
정렬:
1 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 5
우리는 출력 4에서 일치하는 숫자 값을 얻습니다(단일 인스턴스에서 숫자 5는 아무 것도 일치하지 않는 값입니다)
그러면 다음과 같이 들릴 것입니다. 시퀀스에서 중복이 있는 숫자의 수를 결정합니다.
어느 쪽도 아니고 다른 쪽도 아닙니다.
분명히 알려지지 않은 네 개의 숫자가 있습니다. 내 첫 번째 게시물 의 예와 같이 반복되는 숫자 의 수를 찾아야 합니다 .
순서가 중요하지 않고 숫자가 정수이고 범위가 알려진 경우 단순히 카운터 배열을 만들어 O(크기)로 계산할 수 있습니다.
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]);
순서가 중요하지 않고 숫자가 정수이고 범위가 알려진 경우 단순히 카운터 배열을 만들어 O(크기)로 계산할 수 있습니다.
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]);
아마도. 그것은 현재의 표현에 관한 것이 아니라 결정에 관한 것입니다. 앉아서 결정...
기이한.
당신의 선택은 항상 1을 제공합니다. 스스로 생각해내는 것보다 알아내는 것이 더 오래 걸립니다. 그게 다 이상함;;
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));
}
이것도 이렇습니다.
{
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*/ ); // число|количество
}