Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 14:09   #1
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание С++ Сложная задача

Здравствуйте товарищи умные!!!
Помогите с задачкой,
хотя бы алгоритм подскажите, а то вообще мыслей нет!!!

Код:
    7
   3 8
  8 1 0
 2 7 4 4
4 5 2 6 5
Дан числовой треугольник. Написать программу, которая находит
максимальную сумму чисел в вершинах треугольника при движении сверху вниз по ребрам треугольника, т.е. из каждой вершины можно двигаться
вниз влево или вправо.
Задается число уровней
и описание треугольника!
sir.andrey вне форума Ответить с цитированием
Старый 25.10.2010, 14:12   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

хехе, писал я когда-то на Сях на первом курсе такое )))
обращайся )
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 25.10.2010, 14:14   #3
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
хехе, писал я когда-то на Сях на первом курсе такое )))
обращайся )
Ну что ж, буду рад вашей помощи!!!
sir.andrey вне форума Ответить с цитированием
Старый 25.10.2010, 14:47   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

ну пиши в асю тогда лучше )) договоримся о сроках и вознаграждении
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 25.10.2010, 14:55   #5
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Ты ведь тоже был студентом!!!
Ты что не понимаешь??
Откуда у меня деньги???

Последний раз редактировалось sir.andrey; 25.10.2010 в 14:58.
sir.andrey вне форума Ответить с цитированием
Старый 25.10.2010, 16:09   #6
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Ну помогите же!!!!
sir.andrey вне форума Ответить с цитированием
Старый 25.10.2010, 17:36   #7
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Динамическое программирование на двухмерном массиве. Потом выбираем максимум из ответов для последней строки.

Или ответ для корня, если двигались в обратном порядке.
LeBron вне форума Ответить с цитированием
Старый 25.10.2010, 18:28   #8
__Demon__
Пользователь
 
Аватар для __Demon__
 
Регистрация: 13.08.2009
Сообщений: 37
По умолчанию

Так?

Код:
#include <iostream>
#include <stdlib.h>

template<int n>
void triangle(int a[][n])
{
	// Печать треугольника
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < (i + 1); j++)
		{
			std::cout << a[i][j] << ' ';
		}
		std::cout << std::endl;
	}

	// Подщитываем сумму в рёбрах
	int sum1 = 0;
	int sum2 = 0;
	int sum3 = 0;

	for (int i = 0; i < n; i++)
	{
		sum1 += a[i][0];
		sum2 += a[i][i];
		sum3 += a[n - 1][i];
	}

	// Печатаем максимальную сумму
	std::cout << std::endl << "Max = "
		<< std::max(std::max(sum1, sum2), sum3) << std::endl;
}


int main()
{
	int a[5][5] = {{7}, {3, 8}, {8, 1, 0}, 
		{2, 7, 4, 4}, {4, 5, 2, 6, 5}};

	triangle(a);

	system("PAUSE");
	return 0;
}
__Demon__ вне форума Ответить с цитированием
Старый 26.10.2010, 08:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю вариант попроще
Код:
{
	int a[15]={7,3,8,8,1,0,2,7,4,4,4,5,2,6,5};
	//             2     5       9        14
	int sum=0,smax=0,q=1,w=2;
	for(int i=0;i<4;i++){
		sum=a[0]+a[q]+a[w];
		printf("\n%d+%d+%d=%d",a[0],a[q],a[w],sum);
		smax=(sum<smax)?smax:sum;
		q+=(i+2);
		w+=(i+3);

	}
	printf("\n%d",smax);
	getchar();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2010, 09:15   #10
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Вы не понимаете условие!!!
Вот приведу пример!!!
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

Ответ: 30
7 3 8 7 5
Код:
        7
       / \
     3   8
    / \  / \
   3   4   5
Надо придумать алгоритм, который просчитывает абсолютно все
способы!!!
sir.andrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия - сложная задача! RomT24 Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2009 23:14
Сложная задача asale Microsoft Office Excel 6 07.04.2009 20:36