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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Не скупитесь на слова! Название темы должно адекватно отражать суть решаемой задачи/проблемы.
Старый 25.04.2013, 19:22   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Каюсь, грешен, 300 лет ничего не писал
Все мы не без греха Надеюсь Вы нас еще порадуете своим кодом
P.S. Дико извиняюсь за оффтоп
Poma][a вне форума Ответить с цитированием
Старый 25.04.2013, 19:37   #12
1mutant1
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от MagAragorn Посмотреть сообщение
я разобрался,что в вашем коде за все отвечает вот эта строка:
for j:=1 to 3 do if (b[j]=i) then fl:=1;
if fl=1 then continue;
Пытаюсь с ней поразбираться)
За всё она не отвечает, а отвечает только за то, что-бы у нас отрезки одного цвета не располагались на полоске. И 3 тут использовать не очень хорошо, программа получается не универсальная.
Только сейчас заметил, что условие и пример решения в 1 посте не согласовываются.
Цитата:
3 1 1 1
Вывод 6.:
К С З
К З С
С К З
С З К
З С К
З К С
По условию мы должны и К С К считать.......
А основная строка в моём коде имхо эта
Код:
 while (sum<>n) and (sum<n) and (i<m) do begin
Складывать "полоски" в "полоску" пока...
Имхо вы плохо понимаете что такое рекурсия..... даже не знаю чем помочь
Цитата:
рекурсивной называется такая процедура или функция, которая вызывает сама себя;
для завершения процесса рекурсии в алгоритме рекурсивной функции (процедуры) обязательно должно быть условие, обеспечивающее непосредственное завершение функции (процедуры).
И просто необходимо, а на олимпиадах по программированию в особенности, в совершенстве уметь пользоваться дебагом!!!!
Пройдитесь по моему коду с дебагом и думаю вам всё станет ясно...

Последний раз редактировалось 1mutant1; 25.04.2013 в 21:10.
1mutant1 вне форума Ответить с цитированием
Старый 26.04.2013, 10:27   #13
1mutant1
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 18
По умолчанию

Как же меня смутили цифры ))
Наша задача частный случай x в степени y
где x: это коло-во значений(К С Ж), y: длина основной полоски
3 в степени 3 частный наш случай, полный перебор всех возможных вариантов это 27 и это ни что иное как троичная система счисления
001-010-011-100-101-110-111-112 и тд.

Имхо самый красивый и универсальный кусок кода будет выглядеть так
Код:
процедура отр(x,y,z)
начало
......
      цикл по кол-ву разрядов
      цикл по кол-ву значений начало
      ........
      тут накладываем ограничения 
      ........
      отр(x,y,z)
      ..........
      конец
......
конец
x: это кол-во разрядов 3...2
y: сумма элементов К+С+Ж... С+Ж
z: число грубо КСЖ...СЖ и тд.
начало
.......
отр(x=0,y=0,z)
.......
конец
На основе этого можно написать "красивую" универсальную программу.
У Вас есть очень корявый кусок кода, если вы его разобрали то можно его удалить и забыть, так писать не надо и на основе выше изложенного алгоритма написать свою программу.

Последний раз редактировалось 1mutant1; 26.04.2013 в 10:58.
1mutant1 вне форума Ответить с цитированием
Старый 26.04.2013, 13:03   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
3 в степени 3 частный наш случай, полный перебор всех возможных вариантов это 27 и это ни что иное как троичная система счисления
001-010-011-100-101-110-111-112 и тд.
ну, первое число, будет 000
только это всё не очень подходит.
потому как в вашем подсчёте не учитывается ограничения на варианты, когда одинаковые цвета расположены друг за другом.
Очевидно, что такие варианты нужно отбрасывать, поэтому число подходящих вариантов будет МЕНЕЕ, чем 3^N
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2013, 15:02   #15
1mutant1
Пользователь
 
Регистрация: 23.04.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, первое число, будет 000
только это всё не очень подходит.
потому как в вашем подсчёте не учитывается ограничения на варианты, когда одинаковые цвета расположены друг за другом.
для этого мы и делаем условия и грамотно составляем цикл, первый цикл я бы так и оставил while (sum<n or i<m)
второй можно сделать for
я не стал писать ограничения для того что бы человек сам попытался решить задачу!
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Очевидно, что такие варианты нужно отбрасывать, поэтому число подходящих вариантов будет МЕНЕЕ, чем 3^N
Мне то это понятно, готовый исходный код написанный есть и он не многим отличается от того, что представлен для решения задачи из первого поста. Но, в виду использования маленько не такого алгоритма перебора, он не универсален ,так как алгоритм имеет небольшую преемственность от задачи с числами РОМАХИ
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
только это всё не очень подходит.
Не согласен, мы формализовали задачу, просто теперь надо сделать выборку отвечающую нашим условиям.

Последний раз редактировалось 1mutant1; 26.04.2013 в 15:09.
1mutant1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить пробел перед последними 2-мя символами в слова, имеющие минимальную (заданную) длину mr.Starosta Паскаль, Turbo Pascal, PascalABC.NET 9 05.05.2013 09:53
Дана строка символов - определить количество слов, имеющих заданную длину n. Неопытный Общие вопросы Delphi 5 17.05.2012 15:16
Задача на паскале (набрать заданную сумму денег) Старый Gilbert Помощь студентам 4 21.03.2011 15:12
Какой длины пакет, как поменять длину пакета. Ado, MSSQL. ercartman БД в Delphi 0 01.09.2010 19:52
Выбор строк,длина которых превышает заданную Dell2dimka Помощь студентам 12 26.01.2010 13:07