0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 5
|
||||||
1 | ||||||
Задача на двухмерный массив12.12.2016, 13:12. Показов 615. Ответов 8
Метки нет Все метки)
(
Собственно, текст задачи:
В данной двумерной целочисленной таблице размером N × N требуется найти три элемента, сумма которых максимальна. При этом первый элемент должен быть соседним по горизонтали или вертикали со вторым, а второй — с третьим. Входные данные Входной файл INPUT.TXT содержит в первой строке число N (1 < N ≤ 2000). В следующих N строках записано по N чисел – элементы таблицы. Элементы матрицы по абсолютной величине не превышают 100. Выходные данные Выходной файл OUTPUT.TXT должен содержать единственное число — максимальную сумму. Ниже написан код моей программы. Но на сайте, откуда я взял её, она проходит лишь 2 теста. Возможно, я неверно понимаю условие.
0
|
|
12.12.2016, 13:12 | |
Ответы с готовыми решениями:
8
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
12.12.2016, 13:50 | 2 |
я так думаю, это из-за того, что ты позволяешь суммировать за пределами таблицы, где стоят нули, например
-5 -5 1000 -5 -5 -5 -5 -5 -5 правильный ответ здесь -990, а у тебя будет 1000: summ[l]:=a2[i,j]+a2[i,j+1]+a2[i,j+2];
1
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 5
|
||||||
12.12.2016, 15:36 [ТС] | 3 | |||||
Допустим, эту проблему я решил, ограничив все i и j в пределах от 0 до n-1
Это, увы, не решает проблемы: как было 2 теста, так и осталось. (Возможно, конечно, что я просто неправильно делаю ограничение...)
Похоже, разобрался, почему не работало! Всё дело в l в первом элементе суммы. Но теперь не менее важный вопрос: как уменьшить время выполнения программы.
0
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
12.12.2016, 15:58 | 4 |
тогда и inc(l) в конце тела цикла лишнее, т.к. l увеличивается всегда перед добавлением, а это только "дыры" делает.
А со временем что за проблемы?
0
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 5
|
|
12.12.2016, 20:05 [ТС] | 5 |
Слишком долго программа работает. Ума не приложу, как увеличить быстродействие существенно не меняя алгоритм
0
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
13.12.2016, 00:25 | 6 |
если сделать циклы
For i:=1 to n-2 do For j:=1 to n-2 do т.е. внутри прямоугольника, заведомо не забредая наружу, при этом a2[i,j] - центральная ячейка треугольника 3х3, то все эти проверки if (j+1<=n-1) and (j+2<=n-1) then просто будут не нужны только надо будет переписать код для случая трех вертикальных и трех горизонтальных ячеек, т.к. там a2[i,j] у тебя не центральная, причем для этих комбинаций у тебя написан код дважды
0
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
||||||
13.12.2016, 01:06 | 7 | |||||
0,8 сек на матрице 5000х5000 это много?
0
|
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
|
|
13.12.2016, 01:07 | 8 |
скрины
0
|
0 / 0 / 0
Регистрация: 12.12.2016
Сообщений: 5
|
|
13.12.2016, 10:33 [ТС] | 9 |
0
|
13.12.2016, 10:33 | |
Помогаю со студенческими работами здесь
9
Тривиальная задача: двухмерный динамический массив
Задача на Двухмерный массив . ! В исходной матрице заменить элементы главной диагонали на единицу двухмерный массив, просто массив и дана строка, состоящая из русских слов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |