Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
1

Динамическое программирование в трёхмерном массиве

30.03.2019, 23:27. Просмотров 2078. Ответов 8

Здравствуйте
Имеется классическая задача дп, только в трёхмерном массиве. В нём нужно найти наименьший путь из левого верхнего угла в правый нижний ( из (1, 1, 1) в (m, n, t)), двигаясь только вправо, вниз, либо внутрь.
Думал, что решил задачу, пока не поменял массив.
Проблема в том, что правильно пересчитывается только первая матрица, в других могут оставаться несколько тех же самых чисел.
Смотрел решения задач в двумерном массиве, вроде, понимал, но в своей задаче больше ничего не смог исправить, что-то пишу и уже сам не понимаю, что делаю.
Вот код. В файле в первой строке написаны размеры, далее сам массив.
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    const int n1 = 21, n2 = 21, n3 = 21;
    int arr[n1][n2][n3];
    int b[n1][n2][n3];
    ifstream fin("input.txt");
    int m, n, t;
    fin >> m >> n >> t;
 
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= t; k++) {
                fin >> arr[i][j][k];
                b[i][j][k] = arr[i][j][k];
                cout << '\t' << arr[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    for (int i = 0; i <= m; i++) { 
        for (int j = 0; j <= n; j++) {
            for (int k = 0; k <= t; k++) {
                b[i][j][0] = INT_MAX;
                b[i][0][k] = INT_MAX;
                b[0][j][k] = INT_MAX;
            }
        }
    }
 
 
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= t; k++) {
                
                    if (b[i - 1][j][k] < b[i][j - 1][k] &&
                        b[i - 1][j][k] < b[i][j][k - 1]) {
                        b[i][j][k] = b[i - 1][j][k] + arr[i][j][k];
                    }
                    else if (b[i][j - 1][k] < b[i - 1][j][k] &&
                        b[i][j - 1][k] < b[i][j][k - 1]) {
                        b[i][j][k] = b[i][j - 1][k] + arr[i][j][k];
                    }
                    else if (b[i][j][k - 1] < b[i - 1][j][k] &&
                        b[i][j][k - 1] < b[i][j - 1][k]) {
                        b[i][j][k] = b[i][j][k - 1] + arr[i][j][k];
                    }
                    cout << '\t' << "pos(" << i << "," << j << "," << k << ")" << b[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    cout << "--------------" << endl;
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= t; k++) {
                
                cout << '\t' << b[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
0
Вложения
Тип файла: txt Работает.txt (106 байт, 6 просмотров)
Тип файла: txt Не работает.txt (145 байт, 5 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2019, 23:27
Ответы с готовыми решениями:

Тени в трехмерном массиве.
Тени. В трехмерном массиве k(l, m, n), состоящем из нулей и единиц, хранится сеточное изображение...

Двоичный поиск в трехмерном массиве
В трехмерном массиве найти заданный Х, использовав алгоритм двоичного поиска, который находит самый...

Работа с индексами в Трёхмерном массиве
Доброго времени суток, на курсах задали такое задание: &quot;Создайте программу, которая содержит...

Найти min в трехмерном массиве
Помогите доработать программу чтобы выводился min в трёхмерном массиве(сейчас ищет максимальное)...

8
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
01.04.2019, 18:42  [ТС] 2
Просветление еще не пришло
0
64 / 30 / 18
Регистрация: 16.03.2019
Сообщений: 84
01.04.2019, 19:09 3
Здравствуйте.
А можно формулировку задания полностью выложить? Если задание из методички взято, неплохо бы и её тоже сюда.
Почему у вас индексы массивов начинаются с 1 ?

Добавлено через 1 минуту
Где аналогиченое решение для 2-х мерного массива посмотреть можно?
0
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
01.04.2019, 19:22  [ТС] 4
Вот само задание:
Дан трехмерный числовой массив размером N1xN2xN3. Найти такой путь из клетки [1,1,1] в клетку [N1,N2,N3], чтобы сумма чисел по данному пути и количество пройденных клеток были минимальными. Двигаться можно только вправо, вниз, либо внутрь.
Индексы массива с 1 потому, что я ввёл фиктивные нулевые строку, столбец и матрицу, которые заполнил максимальными значениями, так как сравнение будет с элементами, которых нет
Аналогичное решение есть здесь, ну и тут
0
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
02.04.2019, 22:47  [ТС] 5
Немного прояснилась проблема. Когда считывал файл, то намудрил с измерениями и не так с ними работал, но это не главное
Массив пересчитывается правильно, программа работает, но частично.
Не пересчитанные элементы появляются в массиве потому, что в этом месте происходит выбор из двух одинаковых значений.
Как это исправить - я не знаю, требуется помощь
Еще переписал программу, теперь пересчёт ведется с последнего элемента, чтобы потом проще было выводить путь
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
 
    const int n1 = 20, n2 = 20, n3 = 20;
    string res1 = "";
    int arr[n1][n2][n3];
    int b[n1][n2][n3];
    int min = 0;
    ifstream fin("input.txt");
    int z, y, x;        //matrices, lines, values
    fin >> z >> y >> x;
 
    for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                fin >> arr[i][j][k];
                b[i][j][k] = arr[i][j][k];
                cout << '\t' << arr[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
//Заполнение строк, столбцов и матрицы, которые недостижимы
    for (int i = 0; i <= z; i++) {
        for (int j = 0; j <= y; j++) {
            for (int k = 0; k <= x; k++) {
                b[i][j][x] = INT_MAX;
                b[i][y][k] = INT_MAX;
                b[z][j][k] = INT_MAX;
            }
        }
    }
 
    int i1 = 0;
    int j1 = 0;
    int k1 = 0;
//Пересчёт массива с последнего элемента к нулевому
    for (int i = z - 1; i >= 0; i--) {
        for (int j = y - 1; j >= 0; j--) {
            for (int k = x - 1; k >= 0; k--) {
 
                if (b[i + 1][j][k] < b[i][j + 1][k] &&
                    b[i + 1][j][k] < b[i][j][k + 1]) {
                    b[i][j][k] = b[i + 1][j][k] + arr[i][j][k];
                }
                else if (b[i][j + 1][k] < b[i + 1][j][k] &&
                    b[i][j + 1][k] < b[i][j][k + 1]) {
                    b[i][j][k] = b[i][j + 1][k] + arr[i][j][k];
                }
                else if (b[i][j][k + 1] < b[i + 1][j][k] &&
                    b[i][j][k + 1] < b[i][j + 1][k]) {
                    b[i][j][k] = b[i][j][k + 1] + arr[i][j][k];
                }
                min = b[0][0][0];
                cout << '\t' << "(" << i << "," << j << "," << k << ")" << b[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    cout << "-------------------------------------" << endl;
    for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                if (i == i1 && j == j1 && k == k1) {
                    res1 += "(" + to_string(i) + "," + to_string(j) + "," + to_string(k) + ") ";
                    if (b[i + 1][j][k] < b[i][j + 1][k] &&
                        b[i + 1][j][k] < b[i][j][k + 1]) {
                        i1 = i + 1;
                    }
                    else if (b[i][j + 1][k] < b[i + 1][j][k] &&
                        b[i][j + 1][k] < b[i][j][k + 1]) {
                        j1 = j + 1;
                    }
                    else if (b[i][j][k + 1] < b[i + 1][j][k] &&
                        b[i][j][k + 1] < b[i][j + 1][k]) {
                        k1 = k + 1;
                    }
                }
            }
        }
    }
    cout << "Path: " << res1 << endl;
    cout << "Length: " << min << endl;
    system("pause");
    return 0;
}
Файл с массивом, в котором возникает ошибка, прикрепляю
Останавливается на элементе (0, 1, 3), так как там идет выбор между двумя равными значениями. Как это исправить? Сам не понимаю
0
Вложения
Тип файла: txt input.txt (140 байт, 7 просмотров)
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
06.04.2019, 18:20  [ТС] 6
Еще очень актуально
0
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
09.04.2019, 21:14  [ТС] 7
Надежды нет?
0
64 / 30 / 18
Регистрация: 16.03.2019
Сообщений: 84
12.04.2019, 21:15 8
Лучший ответ Сообщение было отмечено Dozy как решение

Решение

Наконец то дошли руки до 3-х мерной ортогональной черепахи...
Интересно было решить самому.
Потому привожу свое решение. Не знаю, актуально ли оно или уже нет.
Взял то же расположение индексов массивов как в приведенном выше коде. И тот же тип элементов в массивах исходных данных и решений.
Сделал 3-й массив для записи путей. Хотя можно обойтись и без него. Но с ним удобнее.

Выскажу свое опасение.
Тип int для массива решений подходит, только если в массиве исходных данных используются
небольшие числа. Для большх чисел нужен тип с большей разрядностью (например __int64) или числа с плавающей точкой.
В коде есть вывод нескольких промежуточных результатов, если не нужно - можно убрать.
У меня не было времени качественно протестировать решение, просьба это сделать самому на тестовых примерах и отписаться о результатах.
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
#include <iostream>
#include <fstream>
using namespace std;
// Создание 3-мерного массива из элементов произвольного типа
template <typename T>
T*** CreateArray3N(int size_i, int size_j, int size_k)
{
    T*** pA = new T**[size_i];
    for (int i=0; i < size_i; i++)
    {
        pA[i] = new T*[size_j];
        for (int j=0; j < size_j; j++)
            pA[i][j] = new T[size_k];
    }
    return pA;
}
// Удаление 3-мерного массива из элементов произвольного типа
template <typename T>
void DeleteArray3N(T*** &Array, int size_i, int size_j)
{
    for (int i=0; i < size_i; i++)
    {
        for (int j=0; j < size_j; j++)
            delete [] Array[i][j];
        delete [] Array[i];
    }
    delete [] Array;
}
// Вывод на экран 3-мерного массива из элементов произвольного типа
// Вывод элементов должен подерживаться std::cout
// выводим в виде i матриц j x k
// Т.е. i - вдаль, j - вниз, k - вправо
template <typename T>
void PrintArray3N(T const*const*const*const &Array,
        int size_i, int size_j, int size_k, char const*const ArrName)
{
    for (int i=0; i < size_i; i++)
    {
        for (int j=0; j < size_j; j++)
        {
            for (int k=0; k < size_k; k++)
                cout << ArrName << "[" << i << "," << j << "," << k << "] = " << Array[i][j][k] << "\t";
            cout << endl;
        }
        cout << "---------------------"<< endl;
    }
}
 
int main()
{
    ifstream fin("input.txt");
    if (!fin.is_open())
    {
        cout << "Error opening file \"input.txt\"" << endl;
        system("pause");
        return 0;
    }
    int size_i, size_j, size_k;
    fin >> size_i >> size_j >> size_k; // Читаем размерности массива
    // Создаем массив исходных данных
    int*** pA = CreateArray3N<int>(size_i, size_j, size_k);
    // Читаем массив исходных данных из файла
    for (int i=0; i < size_i; i++)
        for (int j=0; j < size_j; j++)
            for (int k=0; k < size_k; k++)
                fin >> pA[i][j][k];
 
    fin.close();
    cout << "Input array :" << endl << endl;
    PrintArray3N(pA, size_i, size_j, size_k, "A");
    cout << endl;
    // Создаем массив решений
    const int size_i_R = size_i + 1;
    const int size_j_R = size_j + 1;
    const int size_k_R = size_k + 1;
    int*** pR = CreateArray3N<int>(size_i_R, size_j_R, size_k_R);
 
    // Заполняем недостижимо-большими значениями "грани" куба
    // Прилегающие к вершине, являющейся концом пути черепахи
 
    // Нижняя грань
    for (int j=0; j < size_j_R; j++)
        for (int k=0; k < size_k_R; k++)
            pR[size_i][j][k] = INT_MAX;
    // Правая боковая грань
    for (int i=0; i < size_i_R; i++)
        for (int k=0; k < size_k_R; k++)
            pR[i][size_j][k] = INT_MAX;
    // Дальняя тыловая вертикальная грань
    for (int i=0; i < size_i_R; i++)
        for (int j=0; j < size_j_R; j++)
            pR[i][j][size_k] = INT_MAX;
    // Нужно обновить одну или 3 следующие ячейки
    // Ячейки, находящиеся справа, внизу или вглубь от ячейки - конца пути черепахи
    // её значение будем складывать с ячейкой (конец пути черепахи) исходных данных
    pR[size_i-1][size_j-1][size_k] = 0;
    pR[size_i-1][size_j][size_k-1] = 0;
    pR[size_i][size_j-1][size_k-1] = 0;
 
    /* - если хотим посмотреть, как заполняются "грани" куба, прилегающие к вершине
    PrintArray3N(pR, size_i_R, size_j_R, size_k_R, "R");
    cout << endl;
    */
 
    // Создаем массив путей
    char*** pP = CreateArray3N<char>(size_i, size_j, size_k);
 
    /*  - если хотим посмотреть заполненный мусором массив путей
    PrintArray3N(pP, size_i, size_j, size_k, "P");
    cout << endl;
    */
    // Собственно решение
    int iR_i, iR_j, iR_k; // Дальний, нижний, правый элементы решения
    for (int i = size_i-1; i != -1 ; i--)
    {
        for (int j = size_j-1; j != -1; j--)
        {
            for (int k = size_k-1; k !=-1; k--)
            {
                iR_i = pR[i+1][j][k];
                iR_j = pR[i][j+1][k];
                iR_k = pR[i][j][k+1];
                if (iR_i < iR_j)
                {
                    if (iR_i < iR_k)
                    { // iR_i < iR_k && iR_i < iR_j
                        pR[i][j][k] = pA[i][j][k] + iR_i;
                        pP[i][j][k] = '+'; // Сохраняем путь вдаль
                    }
                    else
                    { // iR_k <= iR_i && iR_i < iR_j
                        pR[i][j][k] = pA[i][j][k] + iR_k;
                        pP[i][j][k] = '>'; // Сохраняем путь вправо
                    }
                }
                else
                { //iR_j <= iR_i
                    if (iR_j < iR_k)
                    { // iR_j < iR_k && iR_j <= iR_i
                        pR[i][j][k] = pA[i][j][k] + iR_j;
                        pP[i][j][k] = 'v'; // Сохраняем путь вниз
                    }
                    else
                    { // iR_k <= iR_j && iR_j <= iR_i
                        pR[i][j][k] = pA[i][j][k] + iR_k;
                        pP[i][j][k] = '>'; // Сохраняем путь вправо
                    }
                }
            }
        }
    }
    pP[size_i-1][size_j-1][size_k-1] = '.'; // Это конец пути (исключительно для визуализации)
 
    // Выводим сумму встретившихся на пути чисел
    cout << "Minimum sum of numbers R[0][0][0] = " << pR[0][0][0] << endl << endl;
    cout << "Array of solutions :" << endl << endl;
    PrintArray3N(pR, size_i, size_j, size_k, "R"); // Смотрим массив решений
    cout << endl;
    cout << "Array of paths :" << endl << endl;
    PrintArray3N(pP, size_i, size_j, size_k, "P"); // Смотрим массив путей
    cout << endl;
 
    // печатаем путь
    {
        int i=0, j=0, k=0;
        cout << "Path :" << endl << endl;
        while (i < size_i && j < size_j && k < size_k)
        {
            cout << "[" << i << "," << j << "," << k <<"]" << endl;
            switch (pP[i][j][k])
            {
                case '+': // вдаль
                    i++;
                    break;
                case 'v': // вниз
                    j++;
                    break;
                default:  // Вправо
                    k++;
            }
        }
    }
 
    // Освобождаем память, занятую массивами
    DeleteArray3N(pA, size_i, size_j);
    DeleteArray3N(pR, size_i_R, size_j_R);
    DeleteArray3N(pP, size_i, size_j);
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 30 минут
Хотел поправить свои же комментарии, в соответствии с направлениями индексов массивов,
используемых в функции вывода массива на экран
(в коде изменений нет)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    // Дальняя грань
    for (int j=0; j < size_j_R; j++)
        for (int k=0; k < size_k_R; k++)
            pR[size_i][j][k] = INT_MAX;
    // Нижняя грань
    for (int i=0; i < size_i_R; i++)
        for (int k=0; k < size_k_R; k++)
            pR[i][size_j][k] = INT_MAX;
    // Правая вертикальная грань
    for (int i=0; i < size_i_R; i++)
        for (int j=0; j < size_j_R; j++)
            pR[i][j][size_k] = INT_MAX;
    // Нужно обнулить одну или все 3 следующие ячейки
    // Ячейки, находящиеся справа, внизу или вдаль от ячейки - конца пути черепахи
    // их значения (точнее одно из них) будем складывать с ячейкой (конец пути черепахи) исходных данных
    pR[size_i-1][size_j-1][size_k] = 0;
    pR[size_i-1][size_j][size_k-1] = 0;
    pR[size_i][size_j-1][size_k-1] = 0;
А есть у вас такая же задача, только для черепахи в 4-х мерном пространстве?
1
0 / 0 / 0
Регистрация: 03.06.2018
Сообщений: 10
15.04.2019, 16:13  [ТС] 9
Спасибо за помощь! Но несколько дней назад уже сам допёр до того, что нужно просто для первой ячейки, откуда начинается пересчёт, заполнить нулями сравниваемые значения, т.к. они за пределами.
У меня получилось всё более небрежно хахаах
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int min_3(int a, int b, int c) {
    if (a <= b && a <= c) return a;
    else if (b <= a && b <= c) return b;
    else if (c <= b && c <= a) return c;
    else return c;
}
 
int main()
{
    const int n1 = 20, n2 = 20, n3 = 20;
    string res1 = "";
    int arr[n1][n2][n3];
    int b[n1][n2][n3];
    int min = 0;
    ifstream fin("input4.txt");
    int z, y, x;        //matrices, lines, values
    fin >> z >> y >> x;
 
    for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                fin >> arr[i][j][k];
                b[i][j][k] = arr[i][j][k];
                cout << '\t' << arr[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    for (int i = 0; i <= z; i++) {
        for (int j = 0; j <= y; j++) {
            for (int k = 0; k <= x; k++) {
                b[i][j][x] = INT_MAX;
                b[i][y][k] = INT_MAX;
                b[z][j][k] = INT_MAX;
            }
        }
    }
 
    b[z - 1][y - 1][x] = 0;
    b[z - 1][y][x - 1] = 0;
    b[z][y - 1][x - 1] = 0;
    for (int i = z - 1; i >= 0; i--) {
        for (int j = y - 1; j >= 0; j--) {
            for (int k = x - 1; k >= 0; k--) {
                b[i][j][k] = min_3(b[i + 1][j][k], b[i][j + 1][k], b[i][j][k + 1]) + arr[i][j][k];
                cout << '\t' << "(" << i << "," << j << "," << k << ")" << b[i][j][k];
            }
            cout << endl;
        }
        cout << endl;
    }
    min = b[0][0][0];
    cout << "-------------------------------------" << endl;
    int i1 = 0;
    int j1 = 0;
    int k1 = 0;
    for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < x; k++) {
                if (i == i1 && j == j1 && k == k1) {
                    res1 += "(" + to_string(i) + "," + to_string(j) + "," + to_string(k) + ") ";
                    if (b[i + 1][j][k] <= b[i][j + 1][k] &&
                        b[i + 1][j][k] <= b[i][j][k + 1]) {
                        i1 = i + 1;
                    }
                    else if (b[i][j + 1][k] <= b[i + 1][j][k] &&
                        b[i][j + 1][k] <= b[i][j][k + 1]) {
                        j1 = j + 1;
                    }
                    else if (b[i][j][k + 1] <= b[i + 1][j][k] &&
                        b[i][j][k + 1] <= b[i][j + 1][k]) {
                        k1 = k + 1;
                    }
                }
            }
        }
    }
    cout << "Path: " << res1 << endl;
    cout << "Path length: " << min << endl;
    system("pause");
    return 0;
}
Всё работает нормально. А по поводу значений могу сказать, что по условию и не требуется работать с большими числами, ну и работа только с целыми значениями.
Ваше решение, конечно, более удобное!
Цитата Сообщение от Ctty Посмотреть сообщение
А есть у вас такая же задача, только для черепахи в 4-х мерном пространстве?
Ну если можете себе представить четырёхмерное пространство, то можно и для него решить, добавится только еще одно измерение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2019, 16:13

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

Как записать Z в трёхмерном массиве
ребята, простите за дурной вопрос, но не могу разобраться. есть массив const int Y = 2, X = 2,...

Создать ключи в трехмерном массиве
Есть массив struct, кот. заполняется следующим образом: $struct = array(); $struct =...

Наименьшее значение в трехмерном массиве
Подскажите,пожалуйста, как написать код к заданию:написать программу поиска минимального элемента в...

Как удалить элемент в трехмерном массиве
День добрый, Есть 3х мерный массив, который представляет собой набор дву-мерных матриц. Каждой...


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

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

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