IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Чёрный квадрат
Tauka
сообщение 27.08.2003 20:14
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28

Репутация: -  0  +


В матрице А(m,n), которая состоит из любых чисел найти найбольший квадрат (квадратную подматрицу), состоящий целиком из единиц.

Идеи какие-то есть и понимаю, что она несложная, но пока реализовать не получается.  ???


--------------------
С уважением,
Таука.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tauka
сообщение 29.08.2003 21:16
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 28

Репутация: -  0  +


уже сделано! Ура!  ;)


--------------------
С уважением,
Таука.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ivs
сообщение 30.08.2003 21:52
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 209

Репутация: -  0  +


Цитата
уже сделано! Ура!  ;)

Выкладывай  свое решение, а вот мое, с небольшим наворотом:
Код

Program Black_Square;

Uses CRT;

Const
  N = 4;
  M = 4;
Var
  A    : Array [1..N, 1..M] of Integer;
  i, j : Integer;
  im,jm: Integer;
  k    : Integer;
  iMax : Integer;
  Max  : Integer;
  B    : Boolean;

Procedure ReadMatrix;
Begin
  for i := 1 to N do
  begin
     for j := 1 to M do
     begin
      Write('A[',i,',',j,']= ');
      ReadLn(A[i,j]);
     end;
  end;
End;

Procedure PrintMatrix;
Begin
  for i := 1 to N do
  begin
     for j := 1 to M do
     begin
      if (i >= im) and (i<= im + Max - 1) and
         (j >= jm) and (j<= jm + Max - 1)
      then TextColor(Red)
      else TextColor(LightGray);
      Write(A[i,j] : 2);
     end;
     WriteLn;
  end;
  TextColor(LightGray);
End;

Function Check : Boolean;
Var
  z : Integer;
Begin
  z := 1;
  while (A[i+k-z,j+k] = 1) and (A[i+k,j+k-z] = 1) and (k >= z) do z := z + 1;
  if (z = k + 1) then Check := TRUE
             else Check := FALSE;
End;

Begin
  FillChar(i, Ofs(B) - Ofs(i) + SizeOf(B), 0);
  ReadMatrix;
  {==========================================}
  for i := 1 to N do
     for j := 1 to M do
     begin
      if A[i,j] = 1 then
      begin
         B := TRUE;
         k := 1;
         if (Max = 0) then begin Max := 1; im := i; jm := j; end;
         while (A[i+k,j+k] = 1) and B do
         begin
            if Check then k := k + 1
                 else B := FALSE;
            if (k > Max) then begin Max := k; im := i; jm := j; end;
         end;
      end;
     end;
  {==========================================}
  WriteLn('Max Black Square is ', Max);
  PrintMatrix;
  ReadLn;
End.


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tauka
сообщение 31.08.2003 8:20
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 28

Репутация: -  0  +


нет возможности выложить сюда  :-/
но, всё равно, спасибо :о)


--------------------
С уважением,
Таука.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.07.2025 4:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"