2015-09-14 4 views
1

Я пытаюсь создать программу в C++, которая принимает треугольный шаблон чисел в 2-мерный массив.2-D Array C++ Triangle

Пример:

1 

    3 4 

    5 9 2 

9 4 6 1 

В верхней строке одно число (целое число), и каждая строка треугольника имеет еще одно число, чем в строке над ним.

После того, как треугольник был введен и/или проверен по циклам, программа должна пересекать треугольник сверху вниз и записывать все возможные суммы каждого пути;

Путь, пройденный по треугольнику, всегда должен быть смежным с числом в ряду над ним.

При перемещении по треугольнику каждый «путь» должен быть сохранен в новом массиве, чтобы путь мог отображаться. После записи суммы для каждого пути вниз по треугольнику программа должна сравнивать их и отображать путь с наименьшей суммой.

С изменениями я сделал до сих пор благодаря @Beta у меня это до сих пор:

int main() 
{ 
int row = 0; 
int col = 0; 

int A[4][4] = {{2},{8,9},{3,4,5},{6,2,9,1}}; 

for (row = 0; row < 4; row++) 
{ 
    for (col = 0; col <= row; col++) 
    { 
     cout << A[row][col] << " "; 
    } 
    cout << endl; 

Мой выход так далеко:

+1

Во-первых, ваш массив имеет 2 строки и 3 столбца, но вы получаете доступ из 4 в соответствии с вашей инициализацией строки. Тем не менее, цикл цикла для строки <1, что означает, что, поскольку строка начинается с 4, этот цикл не будет выполняться. Попробуйте от 0 до <2. – JVene

+0

Хорошо сделал это. Он выполняется сейчас. Я добавил больше чисел, потому что мне нужно иметь 4 строки, чтобы это выглядело как треугольник. Выход: 2,3,4 8,9,10 3,4,5 6,2,9 – Toad

ответ

1

Я думаю, что трюк вы ищете это:

for (col = 0; col <= row; col ++) 

Я не мог разобрать последнюю часть вопроса («После этого ...»).

EDIT:

Проблема создания треугольника выглядит симметричной проблема печати пробелов в начале каждой строки. С трюком выше, вы должны быть в состоянии понять, чем один.

Что касается рассмотрения всех путей и отображения одной с наименьшей суммой, Что вы пробовали? Если вы не знакомы с поиском по ширине и первому поиску, копированием массивов и массивами указателей, вы, вероятно, не готовы к этому упражнению.

+0

Wow ТНХ это выглядит несколько треугольника теперь только странные вещи его опершись слева от экран.Ooo, чтобы перефразировать эту последнюю часть, что я имею в виду, - это когда треугольник был введен и/или проверен для циклов, программа должна пересекать треугольник сверху вниз и записывать все возможные суммы каждого пути; Путь, пройденный по треугольнику, всегда должен быть смежным с числом в строке над ним. – Toad

+0

@Toad: у вас есть идея, как вы хотите это сделать? (Есть несколько способов.) Вам комфортно с рекурсией? Как насчет 'std :: set'? – Beta

+0

Ну, другой улов в этой программе, которую я делаю, состоит в том, что начиная с вершины треугольника он выведет наименьший путь, чтобы спуститься вниз по треугольнику, и он должен быть смежным с предыдущей строкой этого числа. Вы были правы в отношении 18 и 8, но когда дело доходит до середины, зависит от того, какой путь меньше вниз. – Toad