Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скобочные последовательности

9.4K
29 апреля 2006 года
demonddt
10 / / 28.04.2005
Помогите написать программу, которая должна выводить К-ую правильную скобочную последовательность из N пар скобок. Если такой последовательности не существует (К больше количества правильных скобочных последовательностей из N пар скобок), программа выводит Error
примеры:
N=3 K=1 ((()))
N=3 K=2 (()())
N=3 K=3 (())()
N=3 K=4 ()(())
N=3 K=5 ()()()
N=3 K=6 Error
1.8K
30 апреля 2006 года
LastSoul
279 / / 28.12.2005
У меня пару вопросов:
1. K надо самому вводить или как?

2. Эти скобочные последовательности должны быть уже где-то сохранены, или ты сам должен ввести эту скоб. послед., а прога должна проверить правильно ли ты ее ввел?
например:
(()) - правильно
(()( - неправильно
9.4K
01 мая 2006 года
demonddt
10 / / 28.04.2005
Цитата:
Originally posted by LastSoul
У меня пару вопросов:
1. K надо самому вводить или как?

2. Эти скобочные последовательности должны быть уже где-то сохранены, или ты сам должен ввести эту скоб. послед., а прога должна проверить правильно ли ты ее ввел?
например:
(()) - правильно
(()( - неправильно



Вводится только N и K. А прога должна вывести К-ую правильную скобочную последовательность из N пар скобок.

1.8K
02 мая 2006 года
LastSoul
279 / / 28.12.2005
Цитата:
Originally posted by demonddt
Вводится только N и K. А прога должна вывести К-ую правильную скобочную последовательность из N пар скобок.


с буквой N тебе надо на какой-нибудь форум по математике, чтобы кто-нибудь придумал тебе формулу которая будет считать количество скоб. послед. при определенном N (я в математике не силен, помочь не могу)

Если я правильно понял, то эти послед. уже где-то сохранены, если я прав, то я не вижу никаких серьезных проблем чтобы вывести на экран K-ую ск.пос., ну если не знаешь, то в этом тебе поможет функция Write();

929
02 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by demonddt
Помогите написать программу, которая должна выводить К-ую правильную скобочную последовательность из N пар скобок. Если такой последовательности не существует (К больше количества правильных скобочных последовательностей из N пар скобок), программа выводит Error
примеры:
N=3 K=1 ((()))
N=3 K=2 (()())
N=3 K=3 (())()
N=3 K=4 ()(())
N=3 K=5 ()()()
N=3 K=6 Error


Вот:

Код:
program Brackets;

uses
  Crt;

var
  N, K: Integer;

function MakeBrackets(N, K: Integer): string;
var
  i: Integer;
  s, s1: string;
begin
  if (K = 1) then begin
    s := '';
    for i := 1 to N do
      s := s + '(';
    for i := 1 to N do
      s := s + ')';
  end else begin
    s := MakeBrackets(N, K - 1);
    s1 := '';
    for i := 1 to N do
      s1 := s1 + '()';
    if (s = s1) or (s = 'Error') then
      s := 'Error'
    else begin
      i := N * 2;
      while (Copy(s, i, 3) <> '())')  do
        Dec(i);
      Delete(s, i, 2);
      repeat
        Inc(i);
      until (i > Length(s)) or (s = ')');
      Insert('()', s, i);
    end;
  end;
  MakeBrackets := s;
end;

begin
  ClrScr;
  Write('Введите N:');
  ReadLn(N);
  Write('Введите K:');
  ReadLn(K);
  WriteLn(MakeBrackets(N, K));
end.
9.4K
02 мая 2006 года
demonddt
10 / / 28.04.2005
Большое спасибо. Не думал, что так просто решается...
18K
05 мая 2006 года
EqRon
2 / / 05.05.2006
Это же задачи с olympiads.ru "Вступительное задание ЛКШ"...
Круто, кто-то сам делает, а кто-то просто ищет ответ к задаче на форуме, мда... Жалко только, что я уже ее решил, терь не воспользуешься((
И не стыдно??? Задача наипростейшая!!! Там есть гораздо сложней, тоже будешь за помощью обращаться? Ну и какое тебе после этого обучение? Ты ж там будешь 1/4 понимать :) И то еле-еле
9.4K
06 мая 2006 года
demonddt
10 / / 28.04.2005
Цитата:
Originally posted by EqRon
Это же задачи с olympiads.ru "Вступительное задание ЛКШ"...
Круто, кто-то сам делает, а кто-то просто ищет ответ к задаче на форуме, мда... Жалко только, что я уже ее решил, терь не воспользуешься((
И не стыдно??? Задача наипростейшая!!! Там есть гораздо сложней, тоже будешь за помощью обращаться? Ну и какое тебе после этого обучение? Ты ж там будешь 1/4 понимать :) И то еле-еле



Спасибо за заботу...
Увы... Мне уже поздно в ЛКШ.(по возрасту) Оттуда я решил все задачи кроме этой и последней(если тебе не тяжело - направь на путь истинный)... Просто последовательности, и задачи на комбинаторику мне даются тяжело...

18K
06 мая 2006 года
EqRon
2 / / 05.05.2006
Цитата:
Originally posted by demonddt
Спасибо за заботу...
Увы... Мне уже поздно в ЛКШ.(по возрасту) Оттуда я решил все задачи кроме этой и последней(если тебе не тяжело - направь на путь истинный)... Просто последовательности, и задачи на комбинаторику мне даются тяжело...



Я сейчас сам бьюсь над последней :) Думаю ДО УТРА сделать... Я про вступительное задание узнал 4-5 дней назад, теория далась проще(кроме первого задания), практика показала, что задачи на графы(задача 8 в задании) не мои... А вот П-9 вполне неплохо, сегодня вечером начал решать

350
14 июня 2006 года
cheburator
589 / / 01.06.2006
А никто не пробовал реализовать нерекурсивный алгоритм?
38K
13 апреля 2008 года
GoodBoris
2 / / 13.04.2008
Цитата: sp999
Вот:
Код:
program Brackets;

uses
  Crt;

var
  N, K: Integer;

function MakeBrackets(N, K: Integer): string;
var
  i: Integer;
  s, s1: string;
begin
  if (K = 1) then begin
    s := '';
    for i := 1 to N do
      s := s + '(';
    for i := 1 to N do
      s := s + ')';
  end else begin
    s := MakeBrackets(N, K - 1);
    s1 := '';
    for i := 1 to N do
      s1 := s1 + '()';
    if (s = s1) or (s = 'Error') then
      s := 'Error'
    else begin
      i := N * 2;
      while (Copy(s, i, 3) <> '())')  do
        Dec(i);
      Delete(s, i, 2);
      repeat
        Inc(i);
      until (i > Length(s)) or (s = ')');
      Insert('()', s, i);
    end;
  end;
  MakeBrackets := s;
end;

begin
  ClrScr;
  Write('Введите N:');
  ReadLn(N);
  Write('Введите K:');
  ReadLn(K);
  WriteLn(MakeBrackets(N, K));
end.


Можешь сказать по какому алгоритму ты делал эту задачу? А то я не могу понять...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог