Треугольник из чисел |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Треугольник из чисел |
Ольга |
3.05.2007 11:57
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
На рисунке изображен треугольник из чисел. Напишите программу, которая вычисляет наибольшую сумму чисел, расположенных на пути, начинающемся в верхней точке треугольника и заканчивающемся на основании треугольника.
Код 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 - Каждый шаг на пути может осуществляться вниз по диагонали влево или вниз по диагонали вправо. - Число строк в треугольнике > 1 и <100. - Треугольник составлен из целых чисел от 0 до 99. Сообщение отредактировано: Lapp - 5.05.2007 4:45 |
Renbo |
4.05.2007 19:40
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
у тебя хоть написано что?
чем тебе помочь-то? |
мисс_граффити |
4.05.2007 20:19
Сообщение
#3
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
задание случайно не на деревья?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lapp |
5.05.2007 7:08
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
На рисунке изображен треугольник из чисел. Этот треугольник представляет собой обычную матрицу, поеврнутую на 45 градусов. Ходить в такой матрице можно только направо или вниз. Реализуй ее как массив, а дальше - полный перебор.. Можно рекурсией попробовать, но стек может не выдержать.. Добавлено через 5 мин. Вот как получится, если твой пример записать таким массивом: Код 7 8 0 4 5 3 1 4 6 8 7 2 2 5 4 Матрица всегда будет треугольная. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Bard |
5.05.2007 14:01
Сообщение
#5
|
Учиться, учиться еще раз учиться Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: 3 |
а вот тебе и прога этой задачи:
-------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
klem4 |
5.05.2007 15:56
Сообщение
#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 |
5.05.2007 16:23
Сообщение
#7
|
Гость |
Странно... У меня на единичной треугольной матрице из 5 строк выдало 5, на исходном примере - 30... Вроде, все в порядке с алгоритмом (правда, я задавал значения как константы, может с чтением из файла не то что-нибудь?)
|
klem4 |
5.05.2007 17:20
Сообщение
#8
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Да, проблема в неверном чтении из файла
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Bard |
5.05.2007 19:27
Сообщение
#9
|
Учиться, учиться еще раз учиться Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: 3 |
да нет же мой алгоритм абсолютно верен просто мой ввод из файла таков:
Код 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
Ольга |
7.05.2007 14:13
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!!
|
Ольга |
10.05.2007 8:33
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Еще раз прошу, а то мой вопрос затерялся. Помогите, люди добренькие (я заочница).
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!! |
volvo |
10.05.2007 8:45
Сообщение
#12
|
Гость |
Можно... Используя одномерный массив вместо двумерного (элементы заносятся сверху вниз, слева направо, например):
Const Теперь можно либо немного переделать программу, чтобы она работала сразу только с одномерным массивом, либо можно из этого vector-а данные записать в матрицу (двумя циклами: curr_pos := 1; ) Сообщение отредактировано: volvo - 10.05.2007 8:46 |
samec |
10.05.2007 8:48
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
Подскажите, пожалуйста, а можно ли обойтись без чтения из файла, а задать числа прямо в программе? Если да, то как конкретно? Очень надо так решить, помогите!!! переделываешь процедуру
Добавлено через 14 мин. volvo опередил а вот так переделываешь процедуру вывода результата на экран:
|
Ольга |
10.05.2007 10:43
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Женский Реальное имя: Оля Репутация: 0 |
Спасибо огромное за помощь, программу переделала. Только последняя просьба, можно немного пояснить: что мы этим задаем "write('введите n>');" и "write('введите ar[',i,',',j,']>');" ?
|
samec |
11.05.2007 4:15
Сообщение
#15
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
n - это число строк треугольника, например для следующего треугольника:
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 n=5 а ar[i,j] - это сами числа, которые составляют треугольник. |
Ольга |
11.05.2007 8:36
Сообщение
#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 |
11.05.2007 8:43
Сообщение
#17
|
Гость |
Значит, что-то неправильно сделала... Показывай полную программу...
|
Ольга |
11.05.2007 8:55
Сообщение
#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 |
11.05.2007 9:03
Сообщение
#19
|
Гость |
Это где такое предлагалось? Я предлагал совсем другое, и если ты взяла ОДНУ часть от моего предложения, то будь добра взять и ВТОРУЮ, а не комбинировать непонятно что... Вот что я предлагал:
uses crt;(кстати, ответ должен быть не 24, а 30 - я написал об этом еще в посте №7) |
Софа |
11.05.2007 9:21
Сообщение
#20
|
Группа: Пользователи Сообщений: 9 Пол: Женский Реальное имя: Софья Репутация: 0 |
Огромное спасибо!!!
|
Текстовая версия | 28.04.2024 3:33 |