1 / 7
Oct 2018

To chyba normalne, że program nie przechodzący nawet przykładowych testów (konkretnie drugiego testu) dostaje WA.

Poprawione, wciąż błędna odpowiedź

tab = []
tab2 = [-1000000000000000000]
for i in range(int(input())):
    tab.append(int(input()))
for i in range(len(tab)):
    if sum(tab) > sum(tab2):
        tab2 = tab.copy()
    tab.pop()
tab3 = tab2[::-1].copy()
for i in range(len(tab2)):
    if sum(tab3) > sum(tab2):
        tab2 = tab3.copy()
    tab3.pop()
if sum(tab2) <= 0:
    print(0)
else:
    print(sum(tab2))
2 years later

Cześć,

Rozwiązanie w PYTHON
Czy mógłby ktoś spojrzeć i podpowiedzieć dlaczego generowana jest błędna odpowiedź. Ostatnio co zauważyłem to test 9 i potem … błędna odpowiedź.
Pod tym kątem sprawdziłem podane przykładowe inputu i rezultaty wydawały się poprawne.


Dzięki serdeczne.

Polecam test:
5
1
-2
4
5
-9

Mój output: 9. Twój: 8

Jeżeli uczysz się Pythona to spróbuj:

  1. napiać funkcję max (słowo klucz: def)
  2. potem zastąpić ją funkcją dostępną w języku

Tak, uczę się Pythona.
Jestem zdziwiony, że te dane generują błąd, skoro są podobne do przykładowego testu, który przechodzi.
Nie rozumiem do końca sugestii/koncepcji z funkcją max i późniejszą jej zamiana funkcją wbudowaną.
Moją koncepcją na to zadnie było/jest poszukać listy miast patrząc od początku z maksymalnym zyskiem. Potem na nowej liście zrobić to samo ale od końca.
0: [m1, m2, m3, m4, m5, m6, m7]
1: [m3, m4, m5, m6, m7]
2:[m3, m4, m5, m6]
Dzięki za sugestię i pokazanie błędu.

Spoko. Jak ja zaczynałem na SPOJu to też często się dziwiłem, że u mnie działa a inni widzą błędy :wink:

Koncepcja:

Zamiast konstrukcji typu:

if zysk >= maxZysk:
    maxZysk = zysk

zrób coś typu:

maxZysk = mojaFunkcja(zysk, maxZysk)

Funkcję mojaFunkcja stwórz samodzielnie. Oczywiście tylko w celach dydaktycznych. Później poszukaj czy Python nie daje Ci odpowiedniego narzędzia by nie pisać tak trywialnych funkcji jak mojaFunkcja.

Jak już zrozumiesz jak działają funkcje to możesz nawet uporządkować swój kod np. robiąc funkcję wczytującą dane wejściowe itp.

Co do Twojej koncepcji: brzmi jakby była przekombinowana, ale może jest dobra - zależy na ile ją rozumiem. Jeżeli to przekombinowane to jednak jesteś blisko czyli w sumie nieźle :wink:

PS Dla zestawu:

6
5
-100
5
3
5
-100

też masz pewnie zły out. Jednocześnie jest on bardziej wyrazisty niż poprzedni i może nakieruje Cię na prawidłowe rozwiązanie.