Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
YFKoenigsegg
0 / 0 / 0
Регистрация: 06.10.2018
Сообщений: 78
1

Алгоритм, стратегия решения задачи

14.02.2020, 23:06. Просмотров 158. Ответов 5
Метки нет (Все метки)

Добрый вечер/день. Решаю задачу: написать функцию, в качестве аргумента которой поступает двухмерный массив целочисленных значений(пирамида чисел), содержащий в себе количество уровней пирамиды и количества чисел в уровне(на каждом уровне пирамиды кол-во элементов больше на 1, чем в предыдущем) - стандартная пирамида:
3
7 4 Надо найти - максимальную сумму "скольжения вниз"(в данном случае это будет 3 + 7 + 4 + 9 = 23)
2 4 6
8 5 9 3 Вопрос: Какой алгоритм, какую стратегию лучше всего надо будет применить в решении этой задачи? Может на какие
нюансы обратить внимание, на какие инструменты.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2020, 23:06
Ответы с готовыми решениями:

Циклический алгоритм решения задачи
Помогите решить эту задачу: Осуществить циклический сдвиг элементов квадратной матрицы вправо на К...

Циклический алгоритм решения задачи
cos(x)=1-x^2/2!+x^4/4!-x^6/6!+x^8/8!-....... , при модуль x<бесконечности

Разработать алгоритм и программу решения задачи
Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих...

Алгоритм решения задачи “Ханойские Башни”
Кто может, напишите хотя бы один алгоритм, пожалуйста. Алгоритм решения задачи “Ханойские...

Алгоритм решения задачи «Один в поле воин»
Здравствуйте! Есть задача алгоритм решения которой мне не очень понятен. Просьба объяснить. ...

5
avgoor
1101 / 656 / 159
Регистрация: 05.12.2015
Сообщений: 1,876
15.02.2020, 08:12 2
YFKoenigsegg, обходить каждый ряд, начиная с предпоследнего вверх. При этом заменять i-е число в ряду на сумму его же с максимумом i-го и i+1-го из рада ниже. В итоге на вершине окажется нужная сумма.
Можно еще рекурсивно обходить как дерево сверху, но это не эффективно.
0
YFKoenigsegg
0 / 0 / 0
Регистрация: 06.10.2018
Сообщений: 78
15.02.2020, 11:41  [ТС] 3
avgoor, не, не до конца объяснил, надо чтобы "скользило" по одной из двух возможных вариантов( правильное "скольжение" показано красным, а то, про которое рассказали вы, и которое сделал по вашей рекомендации я, показано зелёным)
0
Изображения
 
КОП
910 / 684 / 202
Регистрация: 15.08.2010
Сообщений: 1,924
Завершенные тесты: 2
15.02.2020, 12:01 4
Цитата Сообщение от YFKoenigsegg Посмотреть сообщение
про которое рассказали вы, и которое сделал по вашей рекомендации я, показано зелёным)
коряво сделали значит, там все правильно написано.

как говорится покажите код, а мы уж вам всё расскажем
0
YFKoenigsegg
0 / 0 / 0
Регистрация: 06.10.2018
Сообщений: 78
15.02.2020, 12:07  [ТС] 5
Всё, сделал задачу, вот такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class PyramidSlideDown
{
    public static int LongestSlideDown(int[][] pyramid)
    {
        for (int i = pyramid.Length - 2; i >= 0; i--)
        {
            int[] twoVariants;
            for(int j = 0; j < pyramid[i].Length; j++)
            {
                twoVariants = new int[] { pyramid[i+1][j], pyramid[i+1][j + 1] };
                int max = twoVariants.Max();
                pyramid[i][j] += max;
            }
        }
  
        return pyramid[0][0];
    }
}
avgoor, большое спасибо за совет)
0
Enifan
665 / 443 / 220
Регистрация: 14.10.2018
Сообщений: 1,241
Завершенные тесты: 1
15.02.2020, 12:09 6
Цитата Сообщение от YFKoenigsegg Посмотреть сообщение
двухмерный массив
на будущее - двумерный и массив массивов - это разные вещи. Желательно называть вещи своими именами, в таком случаи будет проще понять чего вы хотите.
Цитата Сообщение от YFKoenigsegg Посмотреть сообщение
надо чтобы "скользило" по одной из двух возможных вариантов
честно говоря не понял какие тут разные варианты, поскольку вы на рисунке показали как надо. Код по такому алгоритму ниже
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
 
class Program
{
    static void Main()
    {
        int[][] arr =
        {
            new int[] { 3 },
            new int[] { 7, 3 },
            new int[] { 2, 4, 6},
            new int[] { 8, 5, 9, 3}
        };
        Console.WriteLine(Foo(arr));
        Console.ReadKey();
    }
 
    static int Foo(int[][] arr)
    {
        int total = 0;
        for (int i = 0; i < arr.Length; i++)
            total += i == 0 ? arr[0][0] : arr[i][i - 1];
        return total;
    }
}
1
15.02.2020, 12:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2020, 12:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Алгоритм решения задачи "Рыцари 40 островов"
Не подскажете хороший и лёгкий алгоритм для решения такой задачи? Ссылка на задачу Из ссылки:

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.