[C++] Suma w ciągu

0

Siema

Mam problem z takim zadaniem. Mam podany ciąg liczb oraz wielkość sumy jaką mam znaleźć w ciągu. Mam wypisać jego długość dla danej sumy np.
4 3 // 4 - długość ciągu, 3 - poszukiwana suma
1 2 3 4

Odp
2 // Długość ciągu który da mi tą sumę

Jeżeli nie ma takiej sumy ma wypisać "NIE".

Mój problem polega na tym, że mój program zawsze zaczyna od początku a przecież tak być nie musi np.
4 5
1 2 3 2

ODP
powinna być 2 bo mamy podciąg 3 + 2
a wypisuje "NIE"

Mój kod:

#include <cstdio>
#include <iostream>
using namespace std;

int main()
{
    int n,k, liczby[100], suma=0, ciag=0;
    scanf("%d%d",&n, &k);
    for(int i=0;i<n;i++)
    {
            scanf("%d",&liczby[i]);
            if(suma<k)
            {
                              suma=suma+liczby[i];
                              ciag++;
            }
    }
    if(suma!=k)
               printf("NIE");
    else
        printf("%d",ciag);
    
 system("PAUSE");
 return 0;   
}
 

Z góry dziękuję za pomoc.

0

blad polega ogolnie na tym, ze znajdzie Ci ten podciag tylko wtedy jesli sklada sie on z pierwszych cyfr ciagu... do tego Twoja zmienna ciag, nie zwraca liczby podciagow jakie spelniaja warunki zadania, tylko dlugosc tego pierwszego podciagu (o ile go znajdzie)... takze zmienna ciag powinienes inkrementowac dopiero tam gdzie masz else, poza tym po kazdym znalezieniu musisz zerowac sume... ogolnie przeanalizuj co robi program krok po kroku, to zobaczysz o co chodzi... poza tym, jesli to c++, to zamiast scanf pisz cin>>, zamiast printf cout<<, a jak masz np. suma=suma+liczba[i], to suma+=liczba[i], to jest to samo

0

Sprecyzuj pytanie.

  1. Dajesz przykład:
    4 3 // 4 - długość ciągu, 3 - poszukiwana suma
    1 2 3 4

Odp
2 // Długość ciągu który da mi tą sumę
A dlaczego nie 1? Ciąg złożony tylko z liczby 3 też da sumę 3. Masz znaleźć podciąg najdłuższy, najbardziej "po lewej", jakikolwiek?

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