Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

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

Ответ
 
Опции темы
Старый 03.11.2008, 19:03   #1
Irisha_17_85
 
Регистрация: 03.11.2008
Сообщений: 4
Репутация: 10
По умолчанию шахматная доска

Помогите пожалуйста с решением задачки, очень нужно....
Заранее спасибо

Шахматная доска
Максимальное время работы на одном тесте:1 секунда
Максимальный объем используемой памяти:64 мегабайта

Из шахматной доски по границам клеток выпилили связную (не распадающуюся на части) фигуру без дыр. Требуется определить ее периметр.

Формат входных данных
Сначала вводится число N (1 ≤ N ≤ 64) – количество выпиленных клеток. В следующих N строках вводятся координаты выпиленных клеток, разделенные пробелом (номер строки и столбца – числа от 1 до 8). Каждая выпиленная клетка указывается один раз.
Формат выходных данных
Выведите одно число – периметр выпиленной фигуры (сторона клетки равна единице).

Последний раз редактировалось Irisha_17_85; 03.11.2008 в 19:09. Причина: изменение данных
Irisha_17_85 вне форума   Ответить с цитированием
Старый 03.11.2008, 22:02   #2
sverhuVniz
Пользователь
 
Аватар для sverhuVniz
 
Регистрация: 24.10.2008
Адрес: Беларусь г.Могилёв
Сообщений: 32
Репутация: 10
По умолчанию

и ти думаешь что если тебе решат олимпиаду то тебе станет лучше?
посмотри лучше как работает команда из Украины zuta! я не думаю что она постоянно занимает 1 места потому что просит на форуме решить задачу! учись! чем больше работаешь чем легче в дальнейшем!
sverhuVniz вне форума   Ответить с цитированием
Старый 04.11.2008, 09:43   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
Репутация: 132
По умолчанию

type el=0..1;
var a:array[0..9,0..9] of el;
N,S,i,x,y:integer;
inp,outp:text;
begin
assign(inp,'input.txt');
reset(inp);
assign(outp,'output.txt');
rewrite(outp);
readln(inp,N);
for i:=1 to N do
begin
readln(inp,x,y);
a[x,y]:=1;
end;
S:=N*4;
for x:=1 to 8 do
for y:=1 to 8 do
if a[x,y]=1 then
begin
if a[x-1,y]=1 then dec(S);
if a[x+1,y]=1 then dec(S);
if a[x,y-1]=1 then dec(S);
if a[x,y+1]=1 then dec(S);
end;
writeln(outp,S);
close(outp);
end.
__________________
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума   Ответить с цитированием
Старый 04.11.2008, 09:47   #4
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
Репутация: 132
По умолчанию

принцип такой....... записываем в матрицу...... Периметр делаем равным колл-во*4....... затем для каждой ненулевой клетки считаем кол-во смежных ненулевых клеток и отнимаем его от общего периметра.
__________________
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума   Ответить с цитированием
Старый 04.11.2008, 11:50   #5
Irisha_17_85
 
Регистрация: 03.11.2008
Сообщений: 4
Репутация: 10
Хорошо Спасибо огромное!!!

Вы очень помогли! Надо повышать мне свои знания...
Irisha_17_85 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доска объявлений solomusic PHP 1 05.08.2008 18:57
С++:Квадратная матрица и шахматная проблема.. Andres Помощь студентам 7 02.01.2008 22:06


19:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru