В прямоугольной матрице выявить все квадратные подматрицы, у которых суммы элементов обеих диагоналей равны. - Pascal ABC
Формулировка задачи:
Задание: "В прямоугольной матрице выявить все квадратные подматрицы, у которых суммы элементов обеих диагоналей одинаковы."
В программе пошагово от самого 1 элемента берется подматрица(с 2 на 2 и так до d на d) и в ней считаются суммы диагоналей, но проблема в том, что с элементов ближе к правой и нижней стенки матрицы, подматрицы выходят за пределы самой матрицы и элементы за границей берутся соответственно за 0.
Собственно помощь нужна с тем, как это дело ограничить.
(Извиняюсь за изложение, не смог придумать как более доходчиво объяснить.)
Решение задачи: «В прямоугольной матрице выявить все квадратные подматрицы, у которых суммы элементов обеих диагоналей равны.»
textual
Листинг программы
//все элементы матрицы кроме последних строки и столбца for i:=1 to n-1 do for j:=1 to m-1 do //все подматрицы, их нижние правые углы for ii:=i+1 to n do for jj:=j+1 to m do if (ii-i in [2..d])and(ii-i=jj-j) then//входят в диапазон [2..d] begin
Объяснение кода листинга программы
- n - размер матрицы по первому измерению (количество строк)
- m - размер матрицы по второму измерению (количество столбцов)
- d - размерность матрицы (общая размерность матрицы, т.е. m*n)
- i - номер текущей строки
- j - номер текущего столбца
- ii - номер внутренней строки
- jj - номер внутреннего столбца
- [2..d] - диапазон чисел от 2 до d (включительно)
- if (ii-i in [2..d])and(ii-i=jj-j) then - проверка условия для каждой подматрицы
- (ii-i in [2..d]) - проверка, входит ли номер строки ii в диапазон [2..d]
- (ii-i=jj-j) - проверка, равны ли номера строк ii и jj, а также номера столбцов ii и j
- end if - завершение проверки условия для каждой подматрицы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д