Найти координаты начала той области, сумма значений элементов которой максимальная - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задано количество строк и столбцов матрицы, действительные значения её элементов и размеры прямоугольной области. Найти координаты начала той области, сумма значений элементов которой максимальная, и значения этой суммы.

Решение задачи: «Найти координаты начала той области, сумма значений элементов которой максимальная»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.     int M[15][15]={0}, m,n,i,j;
  7.     int O[15][15], Mo,No;
  8.     printf("Enter matrix size:\n");
  9.      while(1)
  10.     {
  11.         printf("Enter number of lines:\n");
  12.         scanf("%d", &n);
  13.         fflush(stdin);
  14.         if (n>1 && n<=15)
  15.          break;
  16.         printf("Error!\n");
  17.     }
  18.     while(1)
  19.     {
  20.         printf("Enter number of column:\n");
  21.         scanf("%d", &m);
  22.         fflush(stdin);
  23.         if (m>1 && m<=15)
  24.          break;
  25.         printf("Error!\n");
  26. }
  27. for (i=0; i <n; i++)
  28. {
  29. for (j=0; j <m; j++)
  30. {
  31.  printf("M[%d][%d] = ", i+1,j+1);
  32.  scanf("%d",&M[i][j]);
  33. }
  34. }       printf("Enter size of area :\n"); //*Введем размер области*//
  35.      while(1)
  36.     {
  37.         printf("Enter number of lines:\n");
  38.         scanf("%d", &No);
  39.         fflush(stdin);
  40.         if (No>0 && No<=15)
  41.         break;
  42.         printf("Error!\n");
  43.     }
  44.     while(1)
  45.     {
  46.         printf("Enter number of column:\n");
  47.         scanf("%d", &Mo);
  48.         fflush(stdin);
  49.         if (Mo>0 && Mo<=15)
  50.         break;
  51.         printf("Error!\n");
  52. }
  53. int Mx = 0;
  54. int im,jm,ii,jj;
  55. double S = 0;
  56. for(i=0; i<=(n-No); i++)
  57.   for(j=0; j<=(m-Mo); j++)
  58.   {
  59.      for(ii=0; ii<No; ii++)
  60.         for(jj=0; jj<Mo; jj++)
  61.            S += M[i+ii][j+jj];
  62.      if ((i==0 && j==0) || S > Mx)
  63.      {
  64.        Mx = S;
  65.        im = i;
  66.        jm = j;
  67.      }
  68.    }
  69. printf("(%d, %d) S=%d\n", im+1, jm+1, Mx);
  70. system ("pause");
  71. return 0;
  72. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы