Сумма элементов двумерного массива (песочные часы)
Задача.
Дан двумерный массив. Число строк равно числу столбцов. Найти сумму элементов, расположенных в области песочных часов (вертикальных – синий цвет на рисунке и горизонтальных – белый цвет).
1. Сумма элементов в области вертикальных песочных часов.
Код javascript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
var arr = []; arr[0] = [1,2,3]; arr[1] = [4,5,6]; arr[2] = [7,8,9]; var summ = 0; for(var i = 0; i < arr.length; i++) { if (i < arr.length/2) { for(var j = i; j < arr[i].length - i; j++) { summ += arr[i][j]; } } else { for(var j = arr[i].length - 1 - i; j <= i; j++) { summ += arr[i][j]; } } } console.log(summ); |
2. Сумма элементов в области горизонтальных песочных часов.
Имея алгоритм и код, для получения суммы элементов в области вертикальных песочных часов, нетрудно получить код для подсчета суммы элементов в области горизонтальных песочных часов.
Подумайте чем отличаются эти две области: горизонтальная и вертикальная?
И найдите отличия в предыдущем и следующем коде javascript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
var arr = []; arr[0] = [1,2,3]; arr[1] = [4,5,6]; arr[2] = [7,8,9]; var summ = 0; for(var i = 0; i < arr.length; i++) { if (i < arr.length/2) { for(var j = i; j < arr[i].length - i; j++) { summ += arr[j][i]; } } else { for(var j = arr[i].length - 1 - i; j <= i; j++) { summ += arr[j][i]; } } } console.log(summ); |
Так что, если вдруг на занятии вы разбирали первую часть задачи (вертикальные часы), а домой вам задали вторую часть задачи (горизонтальные часы), то вам повезло…
Хотя, ладно, такого фарта в жизни не бывает .
Всем удачи!
До новых встреч!
Именно так и было – это я по поводу фарта. А вот мой вариант решения горизонтальных песочных часов в квадратном массиве: