Страница 1 из 1

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

Добавлено: 14 апр 2007, 19:08
kasper2007
Дан массив целых чисел MxM.Вводится произвольный массив чисел KxK.Известно ,что K существенно меньше, чем M.Определить,сколько раз второй массив всречается в первом.

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

Добавлено: 14 апр 2007, 21:31
nimbus
задача из разряда "легко, но лень"

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

Добавлено: 14 апр 2007, 22:11
Колядин Максим
задача из разряда "легко, но лень"
Почему сразу "лень"? Ведь существует понятие "начинающий программист", которму, как показывает практика, всё нужно разжевать и положить в рот, чтобы он понял... Может быть ты и прав, но нужно хотя бы что-то знать о том человеке, в чей адрес говоришь, прежде чем бросаться такими словами!
Дан массив целых чисел 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.
Вот, собственно, и всё.

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

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

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

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.
Тут проще написать, чем объяснить