Algorytm - błędny wynik

0

Dlaczego po wpisaniu takich liczb:
12
6
-10
5
-1
4
8
-3
9
11
-40
6
18

Zwraca mi wynik: 24, 11, 12
Zamiast: 3, 9, 33
Co zrobiłem nie tak?

screenshot-20211202183207.png

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class main {

    public static int licznik=0;

    public static void main(String[] args) throws FileNotFoundException {

        int max=0;
        int maxindex=0;
        int minindex=0;

        File file = new File("In0103.txt");
        PrintWriter zapis = new PrintWriter("Out0103.txt");
        Scanner in = new Scanner(file);

        int n = in.nextInt();
        int[] tab = new int[n];
        int k;
        int liczba;

        for(int i=0; i<n; i++) {
            k = in.nextInt();
            tab[i] = k;

            liczba=k;
            if(i==n-1) {
                if(liczba>=0) {
                    max+=liczba;
                    maxindex=i+1;
                }
            }
            else if ((max+liczba)<=0) {
                max=0;
            }
            else {
                max+=liczba;
                maxindex=i+1;
            }
            licznik++;
        }

        int o=max;

        for(int x=maxindex-1; x>0; x--) {
            if(o>0) {
                o-=tab[x];
                minindex=x+1;
                licznik++;
            }
        }
        System.out.println(licznik);

        zapis.println(max + ", " + minindex + ", " + maxindex);
        zapis.close();
    }
}

1

Debugowałeś? Tam jakies dziwne rzeczy się dzieją, indeksy w złej kolejności, i wyłazisz poza tablicę.

2

Tylko dodajesz liczby do siebie, nie odejmiesz strat.
To powinno działać:

Strata + Zysk + Strata + Zysk + Zysk

I gdzie mam najwięcej zysk(max) = strata+= suma(strata).

0

Jak masz 12 elementow to jak Ci moze wyjsc 33?

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