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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2015, 20:51   #1
BB-8
Новичок
Джуниор
 
Регистрация: 26.12.2015
Сообщений: 1
По умолчанию C3 из ЕГЭ по информатике

Здравствуйте у меня есть программа, которая строит полное дерево ходов, для игры в камни. Помогите мне сделать из неё программу, которая выводит только те ходы, при которых один игрок гарантированно выиграет а другой гарантированно проиграет. То есть неполное дерево ходов, как в ЕГЭ.

Вот если что правила игры:
два игрока играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых [x], а во второй - [y] камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди. Ход состоит в том, что игрок или увеличивает в [n] раза число камней в какой-то куче, или добавляет [m] камня в какую-то кучу. Выигрывает игрок, после хода которого общее число камней в двух кучах становится не менее [mx] камней. Кто выигрывает при безошибочной игре обоих игроков - игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?

Мой код:
Код:
const
  MAXLEVEL = 20; {Максимальное число ходов}
  MAXSTEPS = 4;  {Число вариантов хода}
 
  
var
  game: array [1..MAXLEVEL, 1..2] of integer;
  hod: array [1..MAXSTEPS, 1..2] of integer;
  mx:integer;

function endofgame(gl: integer): boolean;
begin
  endofgame := (game[gl, 1] + game[gl, 2]) >= mx;
end;

procedure print(gl: integer);
var
  i: integer;
begin
  writeln;
  for i := 1 to gl do 
  write( '(', game[i, 1], ',', game[i, 2], ')--> ');
  if gl mod 2 = 0 then write( '1 win')
  else write( '2 win');
end;

procedure step(x, y, gl: integer);
{x,y - координаты точки, gl - глубина рекурсии}
var
  i: integer;
begin

  game[gl, 1] := x;
  game[gl, 2] := y;
  if endofgame(gl) then 
  print(gl)
  else for i := 1 to MAXSTEPS do
      if i < 3 then step(x * hod[i, 1], y * hod[i, 2], gl + 1)
      else step(x + hod[i, 1], y + hod[i, 2], gl + 1);
end;

var
x0,y0,m,n:byte;
begin
//write('Введите кол-во камней в 1 кучке: ');
x0:=5;

//write('Введите кол-во камней во 2 кучке: ');
y0:=4;

//write('Сколько прибавить: ');
n:=5;

//write('На сколько умножить: ');
m:=3;

//write('Максимальное чило камней: ');
mx:=15;

begin
hod[1, 1]:=m ;
hod[1, 2]:=1 ;

hod[2, 1]:=1 ;
hod[2, 2]:=m ;

hod[3, 1]:=n ;
hod[3, 2]:=0;

hod[4, 1]:=0 ;
hod[4, 2]:=n ;
end;

  step(x0, y0, 1);
end.

Последний раз редактировалось Аватар; 26.12.2015 в 21:18.
BB-8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЕГЭ по информатике Виктор Кочетков Помощь студентам 9 10.01.2012 10:33
Сдаю ЕГЭ по информатике, надо выучить паскаль. Nub2010 Помощь студентам 12 21.10.2010 15:32
Егэ по информатике прямо сейчас. Yaroslav268 Помощь студентам 3 27.05.2010 12:29
ЕГЭ Xcopy Помощь студентам 6 05.02.2010 14:44
ЕГЭ по информатике __STDC__ Свободное общение 39 16.06.2009 16:57