Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Олимпиадные задачи с решениями на Turbo Pascal


Служба Рассылок Subscribe.Ru
Олимпиадные задачи c решениями на Turbo Pascal

Олимпиадные задачи с решениями на Turbo Pascal


Рассылка проекта Sapisoft.By.Ru [#007]


Подписчиков на 26.01.2002 - 2073


Главная Программы Задачи Рассылки Гостевая книга Контакты

Здравствуйте!


  Мы переехали! Теперь наш сайт доступен по адресу: http://sapisoft.by.ru. В разделе "Задачи" также произошли некоторые изменения. Теперь все задачи разделены на три уровня сложности. Определяйте свой уровень, и можете приступать к решению. Задач третьего уровня пока не очень много, но постепенно они будут добаляться...

  Представляем новую рассылку проекта Sapisoft - "Уроки программирования на Turbo Pascal".
  Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.
Наша рассылка поможет вам в освоении языка Turbo Pascal, используя теоретические и практические методы изложения материала.

  Ведущий рассылки - Галин Павел. Форма для подписки - в конце рассылки.

  Теперь, что касается работы рассылки "Олимпиадные задачи с решениями на Turbo Pascal". Планируемая частота выхода - 1-3 раза в неделю. В каждом выпуске - 1-2 задачи с решениями на Turbo Pascal.
  В этом выпуске представляем задачу "Ферзи".


Ферзи (3 уровень)


Условие:
Рассмотрим шахматное поле n x n, на котором размещены n ферзей. Расположение ферзей называется допустимым, если они не атакуют друг друга. Написать программу построения всех полных допустимых расположений N ферзей, где 4<=N>=20.

Технические условия:
В файле "input.txt" содержиться единственное число - n из интервала [4..20]. Программа должна выводить в файл "output.txt" для каждого допустимого расположения ферзей ряд из n натуральных чисел, где порядковый номер каждого числа указывает на номер вертикали, а значение - на номер горизонтали в шахматном поле.

Примеры файлов:
Input.txt Output.txt
4 2 4 1 3
3 1 4 2
5 1 3 5 2 4
1 4 2 5 3
2 4 1 3 5
2 5 3 1 4
3 1 4 2 5
3 5 2 4 1
4 1 3 5 2
4 2 5 3 1
5 2 4 1 3
5 3 1 4 2

Решение:
type
    TNum=1..20;
    TField=array [TNum] of TNum;
var
    N:TNum;

    Field:TField;
    F:Text;

    First:Boolean;

Procedure Save;{Функция сохраняет координаты ферзей в файл}
var

   I:TNum;
begin
assign(f,'output.txt');
append(f);
if first then writeln(f) else first:=true;
for i:=1 to N-1 do Write(F,Field[i],' ');

Write(F,Field[n]);
close(f);
end;

Function Test(i:TNum):boolean;{Функция проверяет, является ли расположение ферзей допустимым}
var
   J:TNum;

   Flag:Boolean;
begin
j:=1;
flag:=true;
while (j<>i) and flag do
begin
  flag:=(Field[i]<>Field[j]) and (abs(Field[i]-Field[j])<>i-j);
  j:=j+1;
end;
test:=flag;
end;

Procedure Find(i:TNum);{Рекурсивная функция, задающая расположение фигур}
var

   J,K:TNum;
begin
for k:=1 to n do
begin
Field[i]:=k;
if test(i) then
if i=n then Save else Find(i+1);
end;
end;

Begin

{Читаем значение n из файла}
assign(F,'input.txt');
reset(F);
read(F,n);
close(f);

{Создаём файл для выходных данных}
assign(f,'output.txt');
rewrite(f);
close(f);

first:=false;{Файл пока пустой}
Find(1);{Запускаем рекурсивную функцию}
End.


Рассылки проекта Sapisoft:


Новости проекта Sapisoft
Информация о выходе новых версий программ, и прочих обновлений на сайте.

Олимпиадные задачи с решениями на Turbo Pascal
Пишете программы на Turbo Pascal? Эта рассылка для Вас! Каждую неделю по одной новой задаче с олимпиад по информатике. Теория, методы решения задач, много полезной информации.

Уроки программирования на Turbo Pascal
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.


Внимание! Полный список всех задач с решениями на Turbo Pascal доступен только на нашем сайте: http://sapisoft.by.ru.


Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Шамис Алексей

Copyright © 2001-2002 by Shamis Alex.




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное