[Pascal] Двумерные массивы
-
- Сообщения: 2
- Зарегистрирован: 14 апр 2007, 19:02
Дан массив целых чисел MxM.Вводится произвольный массив чисел KxK.Известно ,что K существенно меньше, чем M.Определить,сколько раз второй массив всречается в первом.
задача из разряда "легко, но лень"
- Колядин Максим
- Сообщения: 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.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Максим, это у тебя скорее получилось "Сколькими способами можно разместить квадрат КхК в квадрате МхМ". Я так думаю, там имелось в виду, сколько раз "отпечаток" массива К встречается в массиве М.
Где-то так:
Тут проще написать, чем объяснить
Где-то так:
Код: Выделить всё
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.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.