Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Сtrl
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184

Нахождение максимальной суммы треугольника с помощью эффективного алгоритма

13.02.2012, 05:10. Показов 1259. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: http://euler.jakumo.org/problems/view/67.html
Мой код:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
 
namespace csharp_app_con
{
    enum Step : byte { Left = 0, Right = 1 };
    class Triangle
    {
        int[] _values;
 
        public static int WayToIndex(Step[] way)
        {
            int deep = 1, index = 0;
            foreach (Step step in way)
            {
                switch (step)
                {
                    case Step.Left:
                        index += deep;
                        break;
                    case Step.Right:
                        index += deep + 1;
                        break;
                }
                deep++;
            }
            return index;
        }
 
        public static string WayToString(Step[] way)
        {
            if (way.Length == 0)
                return "_";
            string wayStr = "";
            foreach (var step in way)
            {
                switch (step)
                {
                    case Step.Left:
                        wayStr += 'L';
                        break;
                    case Step.Right:
                        wayStr += 'R';
                        break;
                }
            }
            return wayStr;
        }
 
        public int this[Step[] way]
        {
            get
            {
                return _values[WayToIndex(way)];
            }
            set
            {
                _values[WayToIndex(way)] = value;
            }
        }
 
        public int Sum(Step[] way)
        {
            int deep = 1, index = 0;
            int sum = _values[index];
            foreach (Step step in way)
            {
                switch (step)
                {
                    case Step.Left:
                        index += deep;
                        break;
                    case Step.Right:
                        index += deep + 1;
                        break;
                }
                sum += _values[index];
                deep++;
            }
            return sum;
        }
 
        public int Deep
        {
            get
            {
                int deep = 0;
                for (int i = 0, size = _values.Length; i < size; size -= i++)
                    deep++;
                return deep;
            }
        }
 
        delegate Step[] wayAdd(Step[] way, Step step);
 
        Step[] BestInGroup(IGrouping<int, Step[]> theGroup)
        {
            Step[] bestWay = null;
            foreach (var way in theGroup)
                if (bestWay == null || Sum(way) > Sum(bestWay))
                    bestWay = way;
            return bestWay;
        }
 
        public Step[] MaxSumWay()
        {
            List<Step[]> ways = new List<Step[]> { new Step[] { } };
            wayAdd addStep =
                (way, step) =>
                {
                    var list = way.ToList();
                    list.Add(step);
                    return list.ToArray();
                };
            var newWays =
                from way in ways
                let newWaysPair = new List<Step[]> {
                    addStep(way, Step.Left),
                    addStep(way, Step.Right)
                }
                from newWay in newWaysPair
                select newWay;
            var bestSameWays =
                from way in ways
                group way by WayToIndex(way)
                into indexGroup
                select BestInGroup(indexGroup);             
 
            for (int i = 1; i < this.Deep; ++i)
            {
                var bufferNewWays = newWays.ToList();
                ways.Clear();
                foreach (var newWay in bufferNewWays)
                    ways.Add(newWay);
 
                var bufferBestSameWays = bestSameWays.ToList();
                ways.Clear();
                foreach (var bestWay in bufferBestSameWays)
                    ways.Add(bestWay);
            }
 
            Step[] theBestWay = null;
            foreach (var way in ways)
                if (theBestWay == null || this.Sum(way) > this.Sum(theBestWay))
                    theBestWay = way;
            return theBestWay;
        }
 
        private static bool ValidSize(int size)
        {
            if (size > 0)
            {
                int sum = 0, i = 0;
                while ((sum += ++i) < size) ;
                return sum == size;
            }
            else
                return size == 0;
        }
 
        public Triangle(int[] values)
        {
            if (!ValidSize(values.Length))
                throw new ArgumentException();
            _values = values;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Triangle triangle;
            {
                string[] numbersText =
                    new StreamReader(new FileStream("triang.txt", FileMode.Open))
                    .ReadToEnd()
                    .Split(new char[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                var numbersInt =
                    from str in numbersText
                    select int.Parse(str);
                triangle = new Triangle(numbersInt.ToArray());
 
            }
            var maxSumWay = triangle.MaxSumWay();
            Console.WriteLine(Triangle.WayToString(maxSumWay));
            Console.WriteLine("Sum = {0}", triangle.Sum(maxSumWay));
            Console.ReadKey();
        }
    }
}
Собственно, все работает, но:
  1. Не знаю, правильно ли
  2. Код ужасен и нагроможден

Кто что может порекомендовать, где исправляться?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2012, 05:10
Ответы с готовыми решениями:

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

Задача на нахождение максимальной суммы
Подскажите алгоритм решения задачи. Проходит очередной финал Startup, поэтому необходимо заказать пиццу для финалистов, участвующих в...

Нахождение максимальной суммы первых двух элементов
Задача: Дан массив из 10 цифр найти максимальную сумму двух элементов в массиве, если таких несколько то показать первую из них. Например...

6
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
13.02.2012, 08:05
круто!! вот причёсанный код. лови)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
 
namespace csharp_app_con {
    
    public enum Step {
        Left,
        Right
    }
 
    public class Triangle {
        private readonly int[] _values;
 
        private static bool ValidSize(int size) {
            for (int i = 0; ; i++)
                if (size <= 0)
                    break;
                else size -= i;
 
            return size == 0;
        }
 
        public Triangle(int[] values) {
            if (values == null)
                throw new ArgumentNullException("values");
            if (!ValidSize(values.Length))
                throw new ArgumentException();
 
            _values = values;
        }
 
        public static int WayToIndex(IList<Step> way) {
            if (way == null)
                throw new ArgumentNullException("way");
 
            int index = 0;
 
            for (int i = 0, deep = 1; i < way.Count; i++, deep++){
                index += deep;
 
                if (way[i] == Step.Right)
                    index++;
            }
 
            return index;
        }
 
        public static string WayToString(IList<Step> way) {
            if (way == null)
                throw new ArgumentNullException("way");
 
            return /*way.Length == 0 ? "_" :*/new string(way.Select(w => w == Step.Left ? 'L' : 'R').ToArray());
        }
 
        public int this[Step[] way] {
            get {
                return _values[WayToIndex(way)];
            }
            set {
                _values[WayToIndex(way)] = value;
            }
        }
 
        public int Sum(IList<Step> way) {
            int index = 0;
 
            int sum = _values[index];
 
            for (int i = 0, deep = 1; i < way.Count; i++, deep++) {
                index += deep;
 
                if (way[i] == Step.Right)
                    index++;
 
                sum += _values[index];
            }
 
            return sum;
        }
 
        public int Depth {
            get {
                for (int i = 1, size = _values.Length; ; i++)
                    if (size == 0)
                        return i - 1;
                    else if (size > 0)
                        size -= i;
                    else throw new Exception();
            }
        }
 
        private IList<Step> BestInGroup(IEnumerable<IList<Step>> grouping) {
            IList<Step> bestWay = null;
 
            foreach (var way in grouping)
                if (bestWay == null || Sum(way) > Sum(bestWay))
                    bestWay = way;
 
            return bestWay;
        }
 
        public IList<Step> MaxSumWay() {
            var ways = new List<IList<Step>> { new List<Step>() };
 
            for (int i = 1, depth = this.Depth; i < depth; i++)
                ways = ways
                .SelectMany(way => {
                    var lw = new List<Step>(way);
                    var rw = new List<Step>(way);
 
                    lw.Add(Step.Left);
                    rw.Add(Step.Right);
 
                    return new[] { (IList<Step>)lw, rw };
                })
                .GroupBy(way => WayToIndex(way))
                .Select(group => BestInGroup(group)).ToList();
 
            return BestInGroup(ways);
        }
    }
 
    class Program {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        static extern void AllocConsole();
 
        static void Main(string[] args) {
            AllocConsole();
 
            Triangle triangle = new Triangle(
                File.ReadAllText("triangle.txt")
                .Split(new char[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                .Select(s => int.Parse(s)).ToArray()
            );
            
            var maxSumWay = triangle.MaxSumWay();
 
            Console.WriteLine(Triangle.WayToString(maxSumWay));
            Console.WriteLine("Sum = {0}", triangle.Sum(maxSumWay));
            Console.ReadKey();
        }
    }
}
вопросы есть?)

Не по теме:

спасибо за отлично проведённое время: навыки рефакторинга надо всегда поддерживать)) я прям проникся!



ЗЫ. Тут только два метода, которые были внизу класса перенесены на самый верх, так что почти строка-в-строку можно сравнивать. одно свойство переименовано: Deep -> Depth. из предложений - только организовать хранилище не как int[], а int[][] - намного проще читаться будет... обработка исключений в Main тоже не помешала бы. так сказать, для проформы
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.02.2012, 11:12
Сурово вы навернули!
Нам еще в институте подобную задачку давали - после считывания данных из файла в двумерный массив, она решается одним простым циклом. Начинаете с самого нижнего ряда и записываете в вышестоящий ряд наибольшую сумму вершины и одного из прилегающих значений в нижнем ряду.
По окончании цикла максимальное значение будет записано в вершину.

Что-то типа такого (пишу по памяти, могут быть ошибки):
C#
1
2
3
4
5
6
int[][] triangle; // Здесь записаны числа из файла
for (int i = triangle.Length - 2; i >= 0; i--)
   for (int j = 0; j <= i; j++)
      triangle[i][j] += Math.Max(triangle[i+1][j], triangle[i+1][j+1]);
 
int maxSum = triangle[0][0];
Добавлено через 8 минут
Полный код, если кому интересно

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Program
{
    static void Main()
    {
        var triangle = ReadFile("triangle.txt");
        for (int i = triangle.Count - 2; i >= 0; i--)
            for (int j = 0; j <= i; j++)
                triangle[i][j] += Math.Max(triangle[i + 1][j], triangle[i + 1][j + 1]);
        Console.WriteLine(triangle[0][0]);
    }
 
    static List<int[]> ReadFile(string filename)
    {
        List<int[]> triangle = new List<int[]>();
 
        foreach (var line in File.ReadLines(filename))
            triangle.Add(line.Split(' ').Select(str => int.Parse(str)).ToArray());
 
        return triangle;
    }
}
1
 Аватар для Сtrl
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
13.02.2012, 14:41  [ТС]
Цитата Сообщение от Mikant Посмотреть сообщение
круто!! вот причёсанный код. лови) вопросы есть?)
Вопросов нет, недочеты понял. Спасибо!
Цитата Сообщение от kolorotur Посмотреть сообщение
Сурово вы навернули!
Нам еще в институте подобную задачку давали - после считывания данных из файла в двумерный массив, она решается одним простым циклом.
Просто я решил найти не только саму сумму, но и путь ее получения.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.02.2012, 15:45
Цитата Сообщение от Сtrl Посмотреть сообщение
найти не только саму сумму, но и путь ее получения.
Ок, дополняем

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main()
{
    var triangle = ReadFile("triangle.txt");
 
    var path = new StringBuilder(triangle.Count);
    for (int i = triangle.Count - 2; i >= 0; i--) {
        for (int j = 0; j <= i; j++) {
            if (triangle[i + 1][j] > triangle[i + 1][j + 1]) {
                triangle[i][j] += triangle[i + 1][j];
                path.Insert(0, 'L');
            }
            else {
                triangle[i][j] += triangle[i + 1][j + 1];
                path.Insert(0, 'R');
            }
        }
    }
    Console.WriteLine(triangle[0][0]);
    Console.WriteLine(path);
}
0
 Аватар для Сtrl
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
13.02.2012, 16:48  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Ок, дополняем
Неправильно находит. У вас получается
HTML5
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
LLLRLRLLRRLLRLRRLRLRRLRLRRRLLRLRRLRLLLRLRLRLRRLRLRRRLLLRRLRLRRLLLRRRRRLRRRLLRLRR
LLRRRLRLLRRRRLLLRRLLLLLRRLRRLLRRLRRLRRLRRRLRLRLLRRRLRLRLLRRRLRRRLRRLLLRRLRLRRLLR
RRRLLLLRRRLRLLRLLLRLRRLLLLRRLLLLRRRLLRLRRLLLLLRLLRRLRLRLLLRRRLLLLLLRRRRLLLRLLRLL
RRRLLLLRRLLRRLLRLRLRRLRRRLLLLLRRLRRLLLRLLLRRRLRRRRLRLRRLLRLRLRRRLLRRLRRRRRLLLLRL
LRRRLLRLLRLRRLRLRLRRLLLLRLRLRLLRRRLRLLRRRLRRRLRRLLRLLRRLLRRRLLRLRLRRLRLRLLRRLLRL
RRRLLRLRRLLLLRLRLLLRRRLRRLLRLRRRRLLLRLRLRLLRRLLLRRRLRRLLRLRLRRLRRRLRRLRLLLRLLLRR
RRRLRLLRLRRRLLRRLRLRRLLLRRRLLRRLLRLLRLLRRRRLLRRLRLRRLLLRLRRLLRRRLRLLRLLRRRLRLLRR
LRLRRRLLRLLRLRRRRLRRRLLLRRLRRLLLRLLRLRRRLLLRLRRLRLRRLRLRLRLRLRRRLRRRLRLLRRRLRLLR
RLRRLRRLLRLLRRLRLLRLLRRLRLLLLRLRRRLRRLLRLRRLLRRLRLRRRLRLLRLRLRLLLLRLLRLLLRLLRRRL
RLRRLLLRRRRLRLRRRLLRLRLLRRLRLRLRLLLRRRLLRLRLLRLRRLLRLRRRLLRLLLLRRRLRLLRLLRLRRLLR
RLRRLLRRRLRLLRRLLRLLRLLLRRRLRLRRRLRRRRLLRLRRRLRRRRLLLRRLRLLRLRLLRLRRRLLRLRRLRRRL
LRRRRLLLRRLRLRRRRLRLRLLRLLLLLRLLLRRLRLLRRLLLRLRLLLLRRLLRLRRLRRLLRLRRLLLLLRRLLRRL
RLRRLLLRRLRLRLRRRLLRLRLRRRLLRLRRLRLRLLRRLRLLRRRRLLLRRLRRLRLRLLRLLRRRRRLLRLLRRLLR
LLLLRLLRRLLRRLRLLRRRRLLRRRLLLRLRRLRRLRLLLRRLRLLLRLRRRLRRLRRLRRLRRRRLLLLRLRLRLRRL
LLRLRLRLRRLRRLRLLLLRRLRLRRLRRLLLRRLLLLRLLLRLRLRLLRRLLLRLRLRRLRRLRLLRLRRRLRRLRRLL
RRRLLLRLRLRLRLRLLRLRLRRLLRRLRRRLRLLLLRLRRLLRLLRRLRLLRRLRLRLRLRLRLRLLRRLRRLLRRLLR
RLRRLLRLLRRLLLRRLRRRRRLRLLLLRRRRLLRRLLRLRLRLLRLRRLLRLLRRLLRLRRLLLRRLRRLRRRLRLLLR
RRRLLRLRLLLRLRLLLRRLRRLRRLLRLLRLLRRLRLRLRLRLRRLLLRLLRLRRLRLRRLLLLRLLLRLLRLRRLRLL
RRLLRLRRRLLRLRRLRLRRRLRRLRLRRLRRLRRLRLRLLLLLLLLLRLRLLLRRLLRRLRRLLRLRLLRRLRRLLLLR
RRRRRLRRRLLRLRRLLLRRRRLRRRLRLRRLLLRRLRLLRRLRLRLRLLLRLRLRRRRLRLLRRLRLRLLLLLRRRRLL
RRLLLLRRRLRLRLRRLLRRRRRLRLLRLRRLRRLRLRRLRRLRLRLLLRRLLRRLLRRLRLLRLRLRLRLLRLLLRRLR
LLRLLRLRLLRRRLRRLLRRLLLRLRLRRRLLRRLRRRLLLLRRRLRRRLRLRLLRRRRLRLLRLRLRLRRLLRRLRLRR
LRLLLRLLLLLLRRRRRRLLLRRLLRLLRRLLLLRRRRLRLRRLLRLRLRRLRRRLLRLLLLLLRRRLLRRLLRRRRRLL
LLRLLRRLLRRLLRLRRRLRRLRRLRLLRRRRRLRLLRLRLLRRLRLRLRRRLLRRRRRLLLLRLRLRLLLRRLLRLRRL
LRLLRLLRRLRRRRRRLLLRLLLLRRLRLRLRLRLRLRLLRRRLLLRLRRLLRLRRLRLRRLLLRLRLRLLRLRRRRRLL
RLLLRLLLRRRLRRRLRRRLRLLRRRLRLLLRLLLRLLLRLLRRLLRRLLLRLLRLRRRRRLLLLLLRLLLRRLRRRRRL
LRLRRRLRRLRLRLLRRLLRRRLLRLRRLLRRLLLRLLRLLRLRRRRLLLLRRLRLRRLRRLRRLRRLRLRLRLRRLLRL
LLRRLRRLLRLRRRLLRRRLLLLRRLRRLRRLLRRLLRLRRLRLRRLLLRRRLRRLLLRRLRRRLLRLLRLRRRLRLRLR
LLRRLRLLLRLRRLLRLRLLLRLLLLRLLRRRLRLRRLLLRRLLLRRLRLRLLRLLLRRRRLRLLRRLLRRRLLLLLRRL
RRRLLRLRLRRLLRLRLRRLRLRRLLLRLRRLLRLRLRRLLLLLLRLRRLRRLRLRRLRRRRLLLLRRLRRRRLRRLRLR
LRRLRLRRLRRRRLLLLRRRRLLRLRLRRLLLLRLRLRRLRRLRLRRLRRRLLLLRRRLRRLRLLRLRRLLRLLLLRLLR
RRLLLRLLLRRRLLLRRLRRLRLLRLLRRRLRRLRRRRLRRLRLLLRRLRRLLLLLLLRRRLRLLLRLRLRRRRLRRLLL
RRRRLLRRRLLRLRRLRLRRLRRLLLRRLLRRRRLLLLLRLRRLRLRLLLRRLLLLRRLRLRRLLRLRLRLLLRRRLLRR
RLRLRLRRLRLRLRRLRRLRLLRRRLRRLLLLRRLRRRLLLLLRRLLLLRLRRRRRLRLLRLRLLLRRLLLRRLRLLLRR
RRLRLRLRRLRLLRLRRRRLRRLLRLRLRRLRLLRLRRRLLLLLRLRRRLRLLLLLRLLLLRRRLLRLRRLLRRLRRLRL
RRLLRLLLRRRLRLRRRLRLRRLRLLRLLLRRRRLLRRLRRRRLRLLLRLLRRLRLLRRLLRRRLLLLRLRLLLLLRLLR
RLLRRLLRRRRRRLRLRLRRLRLRLRRLLRLLRLRRRRRLLLLRLRRRRLRLLLRRRLRRRLLLRLRRLLLLRLLRLRLL
RRLRLRLRRRLLRRLRLLRLLLRLLRLLRRLRRRRRLLLLRRRRRRRLLLLRRLRLRRLLLLRRLRLLLRLLRRRLLLRL
LRLRLRRRLRRLLLRRLRLRRRRLLLRRRRRLRRLLRLRRLLRRLRLLLRLRLLLRLRLLLRRRLRLRLLRLRLLLRLLR
LRRLRRLRRLLLRLLRLRRLRLLLLRRRLRRRLRRLLRLRRLRRRLLLRRRLLLRRLRLRLRRRLLLLRRRLRLLRRLRL
RRRLRRRRLRLRLLRLLLRLRRLLRRRLRLRLLRLLLLRRRLLRRRLLRRRLRLLRRRLRLLRRRLLRLRRLLRRLRLLR
LRRLLRRLRLLRRRLRLRRRLRRLLRRLRLRRRRLLLLRRRRRRLRLRLLRRLLLLLRRLLRLRRLRLLRRRRLRRLLLR
RRRLRLLRLRLLRLRRLLRLRRLLRLRRLRLLRRRRRLLLRRLLRLRLLRLRLRRLLLLRLRLRLLRLLRLLRRRLLRLL
LRRLRRLRLLLRLLRLLRRLLLRRLRLRRRRRLLRRRRLRRLRRLLLLRRRLLRRLRRLLLLLLRLRLRLLRRLLRLRLL
LRRLLRRLRRLLLRRRLLLRLLRLLRLRRRLRRRLRLRRRRRLLLLRRLRLLLRRLRLRLRLRLLRLLRRLRLLLRRLLR
LLRLLRRRLLRRLRRRLLRRLRLRLLRLLRRLRRLRLRLLRLLRRRLLLLLRLLRLLLRRLLRRRLRRLRLRLRRLRLLL
LRLLRRRLLRLLRRLRRLLLRRLLRLLLRLLLLLRLRLRLLRRLRLRLRRLLRLRLRLRLRRLLRLLLRLLRRRLLLLRL
RLRLLLRRRLRRLRLLLLLRLLRRRLLRLLRLRRLLRLRLLRRLLRRRRRRRLLRRLLRLRLRLRLRRRLLRRLLLRLLR
RRRLLRLLRLRLRLLRLRRLRLLRLLRRLLRRRLRRLRLRRLLLLRRLRRRLLRLRRLRRLRRLLLRLRLRLRLRLRLRL
LRLRRLLRRRRLLRRLRRLRRRLRRLRLLRRLRRLRRLLRRRLRLRLLRRRLRRLRLRRRLLLRLLRLLRRLRLRLRRLL
RLRLRLLRRLLRLRLLRRRRLLRLRLLRLRRRLLRRRLLRLLRRLRRLRRLRLLLRRRLRRLRRRLLRRLRLRLLRLRLR
RLLLRRRLRLRLLLLLRRLRLRRLLLRLRRLLRRLRLRLRRLRLRLRRRRLLLRRLRLLRLRLLRRLRLRLRLLRLRLRL
RLRRLRRRLRLRRLLRLRRLLRLLLRRLLRRRLRRLLRLRRLLRRRLRLLRLLLLRRLRRRLRLRRLRLLRRRLRLRLRL
LRLRLRLRLLRLRLRRRLRLLLRRLLLRLRRRLRLLRLRLRRLLRRRLLLRLRLLRLRRRLLLRLLLRLRLRRRLLLRLR
LLRRLRLRLLRRLLRRRRLLRLRLRRRRRRLRLRLRRLRRLRLRRLLLRLLRRLRLLRLRLLLLLRRLRRLLLRLLLRRL
RLLRRLRLLRLRRLLLRRRLRRLRRLLRRRLRLRLRLRLRRRLRLRLLRLRRLLRLRLLLRRLLRLRLRRLLRRRLLLRL
LLRRLLLRLRLLRRLLRRLRLRLRLLRLLLRLLRLRLLRLRLRLRRLLRRLRLRLRRLRLRLRLRLLRLRLLLRLRRLLR
LRLLRRLLLRLRLRLRLRLLLLLRRLLRLRLRLLRLRRLRLRRLLRRLRLLRLRRRLRRLRRLRLLRLRLRRLLLLRLRR
RRLRRRLRLRRLRLLRLRRLLRRLRRLRLLLRLRLLRRLLRLRLRRLRLRLRRRRLLRRLLRRLRRRLRLRLLLRLRRLR
RLRLLRLRRLRLLRLRLRRLRRRRLLRLLRLRRRRRRLRRLLRLRLLLRLRRRLRRLRLRLRLLLRRRLRLRLLRRLLLR
RLRRLLRRRRLRLRRRRLRLRRLRRRLRRLLRRLRRRLRRLRRLRLRRLRLLRRLLLRRLLLRLRLRRLRLLRLLLRLRL
RRLRLRRLRRRRLRLLLRLRLRLLLRLRLLRLRRLLRLLRLLRRLRLLLRRLLRRLLRLRLLRLRRLRRR
А должно быть
HTML5
1
2
LLRRRRLRLRLRRRRRRLLRLLRLRLRRLLRRRRRRRRLLRRLRRRRRLLLRLRRLLLLRLLRRRRRLRLLLLLLRLLRR
LLLLLRLLLRLRRLRRRLR
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.02.2012, 16:51
Цитата Сообщение от Сtrl Посмотреть сообщение
Неправильно находит.
Да, точно, в моем коде для каждого элемента в дереве запись идет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2012, 16:51
Помогаю со студенческими работами здесь

Как ускорить алгоритм. Нахождение максимальной суммы подряд идущих элементов
Собственно САБЖ, делал программу , которая находит сумму элементов массива.. на данный момент самый оптимальный вариант оказался этот: ...

Нахождение суммы ряда с помощью цикла For
Задание 1. (Нахождение суммы ряда с помощью цикла For…) По заданной формуле члена ряда с номером k составить блок-схему и программу...

Нахождение суммы главной диагонали массива с помощью функций
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int funct(int mas, int s) { s=0; for (int i=0;i&lt;5;i++) { for (int...

Понятие трудоёмкости алгоритма. Понятие эффективного алгоритма
Понятие трудоёмкости алгоритма. Классификация алгоритмов на основе функции трудоёмкости. Методика анализа трудоёмкости основных...

Понятие трудоёмкости алгоритма Понятие эффективного алгоритма
Понятие трудоёмкости алгоритма. Классификация алгоритмов на основе функции трудоёмкости. Методика анализа трудоёмкости основных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru