Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2015, 15:09   #1
vadikUA
 
Регистрация: 30.04.2015
Сообщений: 3
По умолчанию решить задачку о поиске "прямоугольников" с нулевыми элементами в матрице

Дана целочисленная матрица [ai j ]
i=1 ,..., n ; j=1 ,..., m .
Прямоугольником в этой матрице будем называть множество всех
элементов aij , для которых выполнено 1 ≤ p ≤ i ≤ q ≤ n,1 ≤ r ≤ j ≤ s ≤ m,
где p, q, r, s - натуральные числа, задающие прямоугольник.
Площадью прямоугольника назовем число элементов в нем.
Среди прямоугольников матрицы, состоящих целиком из нулей, найти
тот, который имеет наибольшую площадь.
я сделал код для одного прямоугольника в котором все элементи равны 0. А что делать если таких несколько не знаю.
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  const n=5;
  m=5;
  type
  mas=array [1..n,1..m] of integer;
  var i,j,pl,p,q,r,s:integer;
  a:mas;
  begin
for i:=1 to n do
for j:=1 to m do
begin
readln(a[i,j]);
end;
readln(p,q,r,s);
pl:=0;
for i:=1 to n do
begin
if (1<=p) and (p<=i) and (i<=q) and (q<=n) then
begin
for j:=1 to m do
if (1<=r) and (r<=j) and (j<=s) and (s<=m) then
begin
if a[i,j]=0 then
pl:=pl+1;
end;
end;
end;
writeln(pl);
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

Последний раз редактировалось vadikUA; 30.04.2015 в 15:28. Причина: добавлял код
vadikUA вне форума Ответить с цитированием
Старый 30.04.2015, 15:32   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Мутная задача какая-то. В матрице только нули или еще что-то будет?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.04.2015, 15:36   #3
vadikUA
 
Регистрация: 30.04.2015
Сообщений: 3
По умолчанию

в матрице любые числа. Но прямоугольник должен состоять только из нулей. И таких прямоугольников может быть много. И все они находятся внутри прямоугольника, который задается вот так 1 ≤ p ≤ i ≤ q ≤ n,1 ≤ r ≤ j ≤ s ≤ m
vadikUA вне форума Ответить с цитированием
Старый 30.04.2015, 16:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

реально мутненькая задача.

во-первых, один прямоугольник задаётся (оператор вводит) натуральными числами p, q, r, s. А несколько прямоугольников как задаются?

во-вторых, допустим, есть массив с набором элементов
p1, q1, r1, s1, p2, q2, r2, s2 ... pX, qX, rX, sX

Тогда в чём проблема найти те из них, которые состоят ЦЕЛИКОМ из нулевых элементов? Или есть проблема с тем, чтобы найти "площадь" прямоугольника? Или проблема с тем, как из этих "нулевых" прямоугольников найти тот, что имеет максимальную площадь?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.04.2015, 17:14   #5
vadikUA
 
Регистрация: 30.04.2015
Сообщений: 3
По умолчанию

проблема как раз в том чтобы найти площадь этих прямоугольников.
vadikUA вне форума Ответить с цитированием
Старый 30.04.2015, 17:33   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vadikUA Посмотреть сообщение
проблема как раз в том чтобы найти площадь этих прямоугольников.
шутите?

площадь равна:
Код:
P:=(g-p+1)*(s-r+1);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить задачку на C++ toffa Фриланс 0 21.04.2013 11:20
В матрице К (5*5), элементами которой являются шестибуквенные слова, найти слово, в котором первый символ - буква А (Паскаль) Tolian92 Помощь студентам 1 14.12.2011 11:40
Решить задачку... VintProg Свободное общение 4 23.08.2011 16:54
Помогите решить задачку kavkaz Общие вопросы Delphi 1 26.07.2009 08:32