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
galin_kostadinov avatar galin_kostadinov 166 Точки
Привет!

Масива може да ти е с дължина единица, вкючи и тази провека:
if (n == 1) {
    number = arr[0];
    num2 = arr[0];
}

Поздрави!

0
dmartinov avatar dmartinov 37 Точки

Добре, аз имам доста подобна логика на колегата от първия пост с тази разлика, че в main-а съм вкарал логика за случаи, в които ми се опитат да ми подадат 0 или отрицателно число. Имам и споменатата от теб проверка за масив с дължина единица. Въпреки всичко това нещо в Judge дава 80/100. Гледах го толкова много, че зациклих жестоко, но за съжаление не виждам какво изпускам. Може би някой граничен случай или нещо в логиката което ми бяга. Та...имам нужда от помощ. Благодаря предварително!

 

#include <iostream>
#include <array>

void longestSequence(int array[], int length) {

    int number1 = 0;
    int number2 = 0;
    int counter = 1;
    int minCounter = INT_MIN;
    int number = 0;

    for (int i = 1; i < length; i++){
        number1 = array[i - 1];
        number2 = array [i];

        if (number1 == number2){
            counter++;
        } else {
            counter = 1;
        }

        if (minCounter <= counter) {
            number = number1;
            minCounter = counter;
        }

        if (length == 1) {
            number = array[0];
            number2 = array[0];
        }
    }

    if (minCounter <= 1) {
        std::cout << number2 << std::endl;
    } else if (minCounter > 1) {
        for (int i = 0; i < minCounter; i++) {
            std::cout << number << " ";
        }
    }
}

int main() {

    int length = 0;
    std::cin >> length;

    if (length == 0) {
        std::cout << "0";
        return 0;
    }

    if (length > 0) {
        int array[length] = {0};

        for (int i = 0; i < length; i++) {
            std::cin >> array[i];
        }
        longestSequence(array, length);
        } else {
            return 0;
    }

    return 0;
}
0
galin_kostadinov avatar galin_kostadinov 166 Точки

Привет! На твоето решение добавих спомената провекра и ми дава 100/100.

#include <iostream>
#include <array>

void longestSequence(int array[], int length) {

    int number1 = 0;
    int number2 = 0;
    int counter = 1;
    int minCounter = INT_MIN;
    int number = 0;
    if (length == 1) {
        number = array[0];
        number2 = array[0];
    }

    for (int i = 1; i < length; i++){
        number1 = array[i - 1];
        number2 = array [i];

        if (number1 == number2){
            counter++;
        } else {
            counter = 1;
        }

        if (minCounter <= counter) {
            number = number1;
            minCounter = counter;
        }

        if (length == 1) {
            number = array[0];
            number2 = array[0];
        }
    }

    if (minCounter <= 1) {
        std::cout << number2 << std::endl;
    } else if (minCounter > 1) {
        for (int i = 0; i < minCounter; i++) {
            std::cout << number << " ";
        }
    }
}

int main() {

    int length = 0;
    std::cin >> length;

    if (length == 0) {
        std::cout << "0";
        return 0;
    }

    if (length > 0) {
        int array[length] = {0};

        for (int i = 0; i < length; i++) {
            std::cin >> array[i];
        }
        longestSequence(array, length);
        } else {
            return 0;
    }

    return 0;
}

Поздрави!

1
dmartinov avatar dmartinov 37 Точки

Оле Боже....сега видях къде ми е грешката. Аз съм сложил проверката в тялото на FOR-а. Просто ми е била грешно подредена логиката ама така е като зацикли човек :) Благодаря ти много! 

0
Borislav919 avatar Borislav919 1 Точки

Благодаря.

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