Найти координаты начала той области, сумма значений элементов которой максимальная - C (СИ)
Формулировка задачи:
Задано количество строк и столбцов матрицы, действительные значения её элементов и размеры прямоугольной области. Найти координаты начала той области, сумма значений элементов которой максимальная, и значения этой суммы.
Решение задачи: «Найти координаты начала той области, сумма значений элементов которой максимальная»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int M[15][15]={0}, m,n,i,j; int O[15][15], Mo,No; printf("Enter matrix size:\n"); while(1) { printf("Enter number of lines:\n"); scanf("%d", &n); fflush(stdin); if (n>1 && n<=15) break; printf("Error!\n"); } while(1) { printf("Enter number of column:\n"); scanf("%d", &m); fflush(stdin); if (m>1 && m<=15) break; printf("Error!\n"); } for (i=0; i <n; i++) { for (j=0; j <m; j++) { printf("M[%d][%d] = ", i+1,j+1); scanf("%d",&M[i][j]); } } printf("Enter size of area :\n"); //*Введем размер области*// while(1) { printf("Enter number of lines:\n"); scanf("%d", &No); fflush(stdin); if (No>0 && No<=15) break; printf("Error!\n"); } while(1) { printf("Enter number of column:\n"); scanf("%d", &Mo); fflush(stdin); if (Mo>0 && Mo<=15) break; printf("Error!\n"); } int Mx = 0; int im,jm,ii,jj; double S = 0; for(i=0; i<=(n-No); i++) for(j=0; j<=(m-Mo); j++) { for(ii=0; ii<No; ii++) for(jj=0; jj<Mo; jj++) S += M[i+ii][j+jj]; if ((i==0 && j==0) || S > Mx) { Mx = S; im = i; jm = j; } } printf("(%d, %d) S=%d\n", im+1, jm+1, Mx); system ("pause"); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д