#java #arrays #multidimensional-array #split
Вопрос:
Для задачи в моей лекции по алгоритмам и структурам данных мне нужно найти способ разделить данный 2D-массив на разделы. Вот пример: Программа получает целое число k>0
при запуске. Размер массивов [k*k]x[k*k]
Для k=3
этого будет примерно таким:
2 2 0 1 0 0 0 1 1
1 0 1 2 1 0 1 0 0
1 1 1 0 1 2 1 1 2
2 2 2 2 2 0 0 2 0
0 0 0 1 1 2 2 1 2
1 2 2 1 2 0 0 0 1
0 1 0 1 0 0 2 1 1
2 1 0 1 0 2 2 2 2
1 0 1 2 2 2 2 1 2
Теперь я хочу просмотреть массив в виде разделов размера k*k
:
2 2 0 1 0 0 0 1 1
1 0 1 2 1 0 1 0 0
1 1 1 0 1 2 1 1 2
2 2 2 2 2 0 0 2 0
0 0 0 1 1 2 2 1 2
1 2 2 1 2 0 0 0 1
0 1 0 1 0 0 2 1 1
2 1 0 1 0 2 2 2 2
1 0 1 2 2 2 2 1 2
Теперь моя задача состоит в том, чтобы добавить целые числа каждого сегмента и сохранить их в массиве определенного размера k*k
. На данный момент я с треском провалился, получая только неправильные результаты. Есть ли в этом какой-то трюк или какая-то библиотека, которая обладает такой функциональностью?
Комментарии:
1. Можете ли вы опубликовать свое решение, к которому вы пришли до сих пор?
Ответ №1:
int[][] result = new int[k][k];
for (int i = 0; i < k * k; i ) {
for (int j = 0; j < k * k; j ) {
result[i / k][j / k] = array[i][j];
}
}
Ответ №2:
Вот что я придумал до сих пор. Я думаю, что перепутал петли:
private static ArrayList<Integer> getPathZij() {
ArrayList<Integer> list = new ArrayList<>();
int k = (int) Math.sqrt(map.length);
for (int v = k; v < map.length; v = v k) {
for (int i = v - k; i < v; i ) {
int value = 0;
for (int j = v - k; j < v; j ) {
value = value map[i][j];
}
list.add(value);
}
}
return list;
}