Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 23:26   #1
sexyanet
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 3
По умолчанию олимпиадная задача на паскале шоколадные плитки...нужно полное словесное описание

Как описать алгоритм решения задачи?!!!
Помогите пожалуйста!!!

Шоколадные плитки
(100 баллов)

Наверное, всем известно, что шоколад полезен для мозга человека. Поэтому участники национальной олимпиады страны Олимпия принесли на тур много плиток шоколада, чтобы гениальные идеи приходили к ним быстрее. Однако принесенного шоколада оказалось слишком много, и после тура в кабинете осталось N прямоугольных плиток, которые состояли из долей размерами 1×1. Двое участников решили съесть часть оставшегося шоколада, но, учитывая что во время тура они уже съели достаточно много шоколада, было решено сделать это достаточно необычным игровым способом, по следующим правилам.
Участники выполняют определенные операции с шоколадными плитками по очереди: сначала первый, потом второй, снова первый и т.д. В свою очередь участник выбирает плитку шоколада, с которой он будет выполнять одну из следующих операций:
1) Разломить плитку на две; линия разлома должна проходить параллельно сторонам плитки и между долями.
2) Отломить и съесть произвольную «строку» или «столбик» плитки, который не есть крайним.
3) Отломить и съесть все доли плитки, которые находятся с краю, но чтобы после этого от плитки осталась хотя бы одна доля (минимальный размер плитки, c которой может быть произведена такая операция – 3×3).
Никакая из этих операций не может быть произведена с плиткой 1×1, поэтому все такие плитки остаются до конца игры. Проигрывает тот участник, который в свою очередь не может произвести ни одной из приведенных операций.
Задание
Напишите программу CHOCO, которая по информации о плитках шоколада, оставшихся после тура, определяет количество вариантов первого хода первого участника, гарантирующих ему выигрыш, при следовании выигрышной стратегии в дальнейшем.
Входные данные
В первой строке входного файла CHOCO.DAT содержится целое число N (1≤N≤100) – количество шоколадных плиток. Во второй строке содержатся N пар целых чисел, каждая i-ая из которых задает длину и ширину i-ой плитки. Длина и ширина не меньше чем 1 и не превышают 100.
Выходные данные
В единственной строке выходного файла CHOCO.SOL должно находиться целое число – количество вариантов первого хода первого участника, которые гарантируют ему выигрыш, при следовании оптимальной стратегии в дальнейшем.


Пример входных и выходных данных
CHOCO.DAT CHOCO.SOL
1
3 3 3


Выигрышные ходы первого участника следующие: операция (3), операция (2) со второй строкой, и операция (2) со вторым столбиком.

Код:
Var SG: array[1..100,1..100] of Integer;
    fl,clear: array[0..100] of boolean;

Var i,j,k,Res,max,a,b,N,M,Count:integer;
    fi,fo:Text;

Function Col:integer;
var a,b,i,ii,j,k:integer;
Begin
     Reset(fi); Readln(fi,n);
      For ii:=1 to n do Begin read(fi,a,b); fl:=clear; i:=a; j:=b;
       For k:=1 to j-1 do If Res xor SG[i,j] xor SG[i,k] xor SG[i,j-k]=0 Then Inc(count);
       For k:=1 to i-1 do If Res xor SG[i,j] xor SG[k,j] xor SG[i-k,j]=0 Then Inc(count);
       For k:=1 to j-2 do If Res xor SG[i,j] xor SG[i,k] xor SG[i,j-k-1]=0 Then Inc(count);
       For k:=1 to i-2 do If Res xor SG[i,j] xor SG[k,j] xor SG[i-k-1,j]=0 Then Inc(count);
       if (i>2) and (j>2) Then If Res xor SG[i,j] xor SG[i-2,j-2]=0 Then Inc(count);
      End;
     Col:=Count;
End;

Begin
     For i:=1 to 100 do For j:=i to 100 do Begin fl:=clear;
      For k:=1 to j-1 do fl[SG[i,k] xor SG[i,j-k]]:=true;
      For k:=1 to i-1 do fl[SG[k,j] xor SG[i-k,j]]:=true;
      For k:=1 to j-2 do fl[SG[i,k] xor SG[i,j-k-1]]:=true;
      For k:=1 to i-2 do fl[SG[k,j] xor SG[i-k-1,j]]:=true;
      if (i>2) and (j>2) Then fl[SG[i-2,j-2]]:=true;
      For k:=0 to 100 do if not fl[k] Then Break;
      SG[i,j]:=k; SG[j,i]:=k; 
     End;

     Assign(fi,'choco.dat'); Reset(fi); Readln(fi,n);
      For i:=1 to n do Begin read(fi,a,b); Res:=Res xor SG[a,b] End;
     Close(fi);

     Assign(fo,'choco.sol'); ReWrite(fo); Writeln(fo,Col); Close(fo);
End.

Последний раз редактировалось sexyanet; 27.12.2011 в 00:15.
sexyanet вне форума Ответить с цитированием
Старый 26.12.2011, 23:46   #2
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

Оформите код по-человечески, в этом столбе из begin и end никто не захочет разбираться.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 26.12.2011, 23:58   #3
sexyanet
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 3
По умолчанию

может это?!

Последний раз редактировалось sexyanet; 27.12.2011 в 00:15.
sexyanet вне форума Ответить с цитированием
Старый 27.12.2011, 00:03   #4
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

Уже лучше, но еще есть специальный теги для кода, кнопочка с символом #. Если бы вы прочитали правила раздела сразу, вам бы помогли быстрее. И еще справа снизу в сообщении есть кнопка "правка", лучше исправляйте все в первом посте.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 27.12.2011, 00:18   #5
sexyanet
Новичок
Джуниор
 
Регистрация: 26.12.2011
Сообщений: 3
По умолчанию

Ребят, помогите пожалуйста.. Я оформить тему-то с трудом могу, куда уж мне в программировании разбираться?
sexyanet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача. masashama Общие вопросы C/C++ 19 27.10.2011 14:52
Олимпиадная задача Alexey_kor Помощь студентам 7 30.01.2011 02:22
Олимпиадная задача. _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2010 20:53
Словесное описание программы katerina2508 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2010 21:35