[Pascal] Двумерные массивы

Ответить
kasper2007
Сообщения: 2
Зарегистрирован: 14 апр 2007, 19:02

Дан массив целых чисел MxM.Вводится произвольный массив чисел KxK.Известно ,что K существенно меньше, чем M.Определить,сколько раз второй массив всречается в первом.
nimbus
Сообщения: 7
Зарегистрирован: 07 апр 2007, 15:42

задача из разряда "легко, но лень"
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

задача из разряда "легко, но лень"
Почему сразу "лень"? Ведь существует понятие "начинающий программист", которму, как показывает практика, всё нужно разжевать и положить в рот, чтобы он понял... Может быть ты и прав, но нужно хотя бы что-то знать о том человеке, в чей адрес говоришь, прежде чем бросаться такими словами!
Дан массив целых чисел MxM.Вводится произвольный массив чисел KxK.Известно ,что K существенно меньше, чем M.Определить,сколько раз второй массив всречается в первом.
Сразу код:

Код: Выделить всё

var m,k,cons: integer; {m - массив MxM; k - массив KxK; consists - ответ}
begin
readln(m);
readln(k);
cons:=sqr((m-k)+1);
end.
Вот, собственно, и всё.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Максим, это у тебя скорее получилось "Сколькими способами можно разместить квадрат КхК в квадрате МхМ". Я так думаю, там имелось в виду, сколько раз "отпечаток" массива К встречается в массиве М.
Где-то так:

Код: Выделить всё

function even(x,y:byte):boolean;
var i,j:byte;
begin
  even:=true;
  for i:=1 to K do
  for j:=1 to K do
     if M[i+x,j+y]<>K[x,y] then begin even:=false; break;end;
end;
var count,i,j:byte;
begin
  count:=0;
  for i:=0 to M-K do
  for j:=0 to M-K do
  if even(i,j) then inc(count);
  writeln(count)
end.
Тут проще написать, чем объяснить
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить