Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Borislav919 avatar Borislav919 1 Точки

02. Longest Sequence

Здравейте. Може ли малко помощ със задачата. С входа и изхода всичко е наред т.е. при задаване на входа от условието изходът излиза също по условие, но judge не ми дава пълният брой точки. Пробвах същата задача с вложен цикъл(за обхождане на масива), също така и кода да бъде само в main функцията. 

#include <iostream>
#include <climits>
#include <array>
using namespace std;


void longestSequence(int arr[],int n){
    int num1=0;
    int num2=0;
    int counter=1;
    int minCounter=INT_MIN;
    int number=0;
    for(int m=1;m<n;m++){
        num1=arr[m-1];
        num2=arr[m];
        if(num1==num2){
            counter++;

        }else{
            counter=1;
        }
        if(minCounter<=counter){
            number=num1;
            minCounter=counter;
        }
    }
    if(minCounter<=1){
        cout<<num2<<endl;
    }else if(minCounter>1){
        for(int k=0;k<minCounter;k++){
            cout<<number<<" ";
        }
    }


}
int main(){
    int length;
    cin>>length;
    int n=length;
    int arr[n];
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }
    longestSequence(arr,n);
    return 0;
}

Тагове:
0
C++ Fundamentals
Jordan_Jordanov avatar Jordan_Jordanov 16 Точки

Ето едно решение което дава 100/100. Аз имах същия проблем, докато не прочетох тук, че пропускам проверката дали size = 1.

#include <iostream>
#include <vector>

using namespace std;

void fillArray(vector<int>& arr, size_t size)
{
    int num = 0;
    for (size_t i = 0; i < size; ++i)
    {
        cin >> num;
        arr.push_back(num);
    }
}

void printLongestSequence(vector<int>& arr)
{
    size_t size = arr.size(), counter = 0, maxCounter = 0;
    int currentNum = 0;
    if (size == 1)
    {
        cout << arr[0];
        return;
    }
    for (size_t i = 1; i < size; ++i)
    {
        if (i + counter - 1 < size)
        {
            i += counter - 1;
        }
        counter = 0;
        for (size_t j = i; arr[j] == arr[i]; ++j)
        {
            counter++;
            if (j == size - 1)
            {
                break;
            }
        }
        if (counter >= maxCounter)
        {
            maxCounter = counter;
            currentNum = arr[i];
        }
    }
    for (size_t i = 0; i < maxCounter; ++i)
    {
        cout << currentNum << " ";
    }
}

int main()
{
    vector<int> arr;
    int size;
    cin >> size;
    fillArray(arr, size);
    printLongestSequence(arr);
    
    return 0;
}

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.