Найти координаты начала той области, сумма значений элементов которой максимальная - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д