Przeszukiwanie tablic dwuwymiarowych w pionie pod kątem liczby powtarzających się elementów

0

Witam,mam problem z tablicami.Otóż,mam tablice s[10][10] wypełnioną losowymi liczbami ,mam podać długość najdłuższej linii pionowej (czyli ciągu kolejnych liczb w tej samej kolumnie
), złożonej z liczb tej samej wartości,ma ktoś jakiś pomysł?z góry dzięki za pomoc

0

Masz podać tylko długość? Po prostu przeiteruj całą tablicę i zliczaj gdzie s[i][n] == s[i-1][n], największy osiągnięty wynik pamiętaj w osobnej zmiennej.

0

Tak to wygląda w pseudokodzie:

def search(xs){
    max = 1
    for n from 0 to length(xs) - 1{
        elem = xs[n]
        cnt = 1
        for k from n + 1 to length(xs){
            if xs[k] = elem:
                cnt += 1
            else:
                break
        }
        if cnt >= max:
            max = cnt
    }
    return max
}

jako xs podajesz w pętli kolejne kolumny macierzy; Musisz jeszcze zapamiętywać te maxima dla każdej kolumny w jakiejś tablicy i zwrócić z niej maximum(albo po prostu śledzić maxima i zwrócić z nich maksymalną wartość, ufff:))

0
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int maks=0;
    int ile=0;
int s[5][5];
for(int i=0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        cin>>s[i][j];
        if(s[i][j]==s[i-1][j])ile++;
        if(ile>maks)maks=ile;ile=0;
    }
}

cout<<maks;



    return 0;
}

napisałem taki kod,ale niestety,ale nie działa,gdzie tkwi błąd ?

0

W tym że ten kod nie ma sensu?
if(s[i][j]==s[i-1][j])ile++;
co sie stanie kiedy i==0? Odwołasz się do s[-1][...], co wielkiego sensu chyba nie ma. Tzn to C++ więc najpewniej nadpiszesz sobie kawałek pamieci obok tej tablcy, ale raczej nie to było twoją intencją.

0

Ale Kombinujesz, Spróbuj przepisać, to co napisałem, bo działa:) i Wrzuć to w pętlę:

max = 1
for k from 0 to length(matrix){
    tmp = search(matrix[][k])
    if tmp >= max:
        max = tmp
}

Nie jestem pewien czy taka jest składnia dostania się do kolumn macierzy w C++, ale na pewno ktoś kto wie dołoży swoje trzy grosze:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1