Форум » Обработка числовых последовательностей » 27-2692 » Ответить

27-2692

Даниил22: Здравствуйте. Не понимаю, почему программа выдаёт неправильный ответ. [pre2] f=open('27-b.txt') d=int(f.readline()) csum=0 r=0 df=0 s=['1000001']*11 for i in range (d): a,b,c=map(int, f.readline().split()) csum+=min(a,b,c) r=a+b+c-max(a,b,c)-2*min(a,b,c) for j in range (11): df=int(s[j]) if r%11==j and r<df: s[j]=r if csum%11==0: print (csum) else: for j in range (11): df=int(s[j]) if (j+(csum%11))%11==0: print(csum+df) [/pre2]

Ответов - 4

Поляков: Это задача 27.32 из основного сборника. Попробуйте посмотреть авторское решение и сравнить со своим.

rlv: Здравствуйте. Не могу понять, почему программа выдает правильный ответ для файла 27-32b.txt и для тестового файла из условия задачи, а для файла 27-32a.txt выдает ответ 5907 (при правильном указанном 5896). В чем ошибка? [pre2] f = open('27-32a.txt') n = int(f.readline()) m = [] s = 0 for i in range(n): a = list(map(int, f.readline().split())) a.sort() m.append(a[2]-a[0]) m.append(a[1]-a[0]) s = s + a[0] #print(m) print(s) #print(sorted(m)) if s % 11 == 0: print(s) else: m.sort() k = 0 while (s + m[k]) % 11 != 0: k += 1 print(s + m[k]) [/pre2]

Поляков: Попробуйте сравнить свое решение с авторским. Или прочитать разбор задачи 27.Р-01. Дело в том, что оптимальное решение может быть получено несколькими заменами. Ваш алгоритм этого не учитывает.


rlv: Поляков пишет: Ваш алгоритм этого не учитывает. Понятно. Заменять можно несколько чисел в тройках. Спасибо большое.



полная версия страницы