3 8
8 1 0
2 7 4 4
4 5 2 6 5
- Каждый шаг на пути может осуществляться вниз по диагонали влево или вниз по диагонали вправо.
- Число строк в треугольнике > 1 и <100.
- Треугольник составлен из целых чисел от 0 до 99.
Сообщение отредактировано: Lapp -
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Треугольник из чисел |
Ольга |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
На рисунке изображен треугольник из чисел. Напишите программу, которая вычисляет наибольшую сумму чисел, расположенных на пути, начинающемся в верхней точке треугольника и заканчивающемся на основании треугольника.
Код 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 - Каждый шаг на пути может осуществляться вниз по диагонали влево или вниз по диагонали вправо. - Число строк в треугольнике > 1 и <100. - Треугольник составлен из целых чисел от 0 до 99. Сообщение отредактировано: Lapp - |
Renbo |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
у тебя хоть написано что?
чем тебе помочь-то? |
мисс_граффити |
Сообщение
#3
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
задание случайно не на деревья?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
На рисунке изображен треугольник из чисел. Этот треугольник представляет собой обычную матрицу, поеврнутую на 45 градусов. Ходить в такой матрице можно только направо или вниз. Реализуй ее как массив, а дальше - полный перебор.. Можно рекурсией попробовать, но стек может не выдержать.. Добавлено через 5 мин. Вот как получится, если твой пример записать таким массивом: Код 7 8 0 4 5 3 1 4 6 8 7 2 2 5 4 Матрица всегда будет треугольная. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Bard |
Сообщение
#5
|
Учиться, учиться еще раз учиться Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: 3 |
а вот тебе и прога этой задачи:
-------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
klem4 |
Сообщение
#6
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Алгоритм абсолютно не верный ...
для матрицы 1 1 1 1 1 1 Результат 11 Это как так ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#7
|
Гость |
Странно... У меня на единичной треугольной матрице из 5 строк выдало 5, на исходном примере - 30... Вроде, все в порядке с алгоритмом (правда, я задавал значения как константы, может с чтением из файла не то что-нибудь?)
|
klem4 |
Сообщение
#8
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Да, проблема в неверном чтении из файла
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Bard |
Сообщение
#9
|
Учиться, учиться еще раз учиться Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: 3 |
да нет же мой алгоритм абсолютно верен просто мой ввод из файла таков:
Код 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
Ольга |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!!
|
Ольга |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Еще раз прошу, а то мой вопрос затерялся. Помогите, люди добренькие (я заочница).
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!! |
volvo |
Сообщение
#12
|
Гость |
Можно... Используя одномерный массив вместо двумерного (элементы заносятся сверху вниз, слева направо, например):
Const Теперь можно либо немного переделать программу, чтобы она работала сразу только с одномерным массивом, либо можно из этого vector-а данные записать в матрицу (двумя циклами: curr_pos := 1; ) Сообщение отредактировано: volvo - |
samec |
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!! переделываешь процедуру
Добавлено через 14 мин. volvo опередил а вот так переделываешь процедуру вывода результата на экран:
|
Ольга |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Спасибо огромное за помощь, программу переделала. Только последняя просьба, можно немного пояснить: что мы этим задаем "write('введите n>');" и "write('введите ar[',i,',',j,']>');" ?
|
samec |
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
n - это число строк треугольника, например для следующего треугольника:
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 n=5 а ar[i,j] - это сами числа, которые составляют треугольник. |
Ольга |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Спасибо, с этим я разобралась. Только когда я ввожу цифры (7, 3, 8, 8, 1, 0, 2, 7, 4, 4, 4, 5, 2, 6, 5), то как я понимаю в данном примере наибольшая сумма чисел должна считаться по левой диагонали (7,3,8,2,4) и составит 24, а программа выдает 1345. Может я что-то не так поняла?
|
volvo |
Сообщение
#17
|
Гость |
Значит, что-то неправильно сделала... Показывай полную программу...
|
Ольга |
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Вот что у меня получилось (на основании как предлагалось выше)
uses crt; Const vector: array[1 .. 15] of integer = (7, 3, 8, 8, 1, 0, 2, 7, 4, 4, 4, 5, 2, 6, 5); var i,j,n,m:longint; f,g:text; {***********************************************************} function max(x,y:longint):longint; begin if x>y then max:=x else max:=y; end; {***********************************************************} procedure readdata; begin write('введите n>'); readln(n); for i:=1 to n do for j:=1 to i do begin write('введите ar[',i,',',j,']>'); readln(vector[i]); end; end; {***********************************************************} procedure checker; begin for i:=2 to n do for j:=1 to i do if j=1 then vector[i]:=vector[i]+vector[i-1] else if j=i then vector[i]:=vector[i]+vector[i-1] else vector[i]:=vector[i]+max(vector[i-1],vector[i-1]); end; {***********************************************************} procedure writedata; begin for i:=1 to n do if vector[i]>m then m:=vector[i]; writeln('naibolchay summa',m); end; {***********************************************************} begin clrscr; readdata; checker; writedata; readkey; end. |
volvo |
Сообщение
#19
|
Гость |
Это где такое предлагалось? Я предлагал совсем другое, и если ты взяла ОДНУ часть от моего предложения, то будь добра взять и ВТОРУЮ, а не комбинировать непонятно что... Вот что я предлагал:
uses crt;(кстати, ответ должен быть не 24, а 30 - я написал об этом еще в посте №7) |
Софа |
Сообщение
#20
|
Группа: Пользователи Сообщений: 9 Пол: Женский Реальное имя: Софья Репутация: 0 |
Огромное спасибо!!!
|
Текстовая версия | 23.12.2024 20:05 |