Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #11  
Старый 09.06.2009, 15:56
Новичок

Отправить личное сообщение для konstantin Посмотреть профиль Найти все сообщения от konstantin
 
Регистрация: 08.06.2009
Сообщений: 14

Код, похоже, обращается и к другим подпрограммам, а они
какие?
  #12  
Старый 09.06.2009, 16:11
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

нет, ни к каким больше не обращается.
Код:
вот на Паскале (переводил прямо здесь, могут быть ошибки)
возможно, uses Math понадобится


procedure diff_partitions(Sum, K, N, Minn: Integer; lst: string);
var
  i: Integer;
begin
    if K = 0 then begin
        if Sum = 0 then
            Writeln(lst);
        Exit;
   end;
    for i := Minn to Min(N, Sum) do
        diff_partitions(Sum - i, K - 1, N, i+1, lst + ' ' + IntToStr(i));
end;

вызов
diff_partitions(10, 3, 6, 1, '');

Последний раз редактировалось MBo, 09.06.2009 в 16:16.
  #13  
Старый 09.06.2009, 21:56
Новичок

Отправить личное сообщение для konstantin Посмотреть профиль Найти все сообщения от konstantin
 
Регистрация: 08.06.2009
Сообщений: 14

Не работает, требует каких-то модулей или функций, а у
меня Паскаль.
См. приложение:

procedure diff_partitions(Sum, K, N, Minn: Integer; lst: string);
var
i: Integer;
begin
if K = 0 then begin
if Sum = 0 then
Writeln(lst);
Exit;
end;
for i := Minn to Min(N, Sum) do
diff_partitions(Sum - i, K - 1, N, i+1, lst + ' ' + IntToStr(i));
end;
begin
Write('Columns, MaxNumber, SumString :');
ReadLn(K, N, Sum);
diff_partitions(Sum, K, N, lst, ' ');
ReadLn
end.

Как довести программу до конца?


MBo(Цитата):
"...это задача получения разбиения Sum на K неповторяющихся слагаемых,не больших N".
Подскажите, пожалуйста, ресурс, где публикуется именно этот вариант
задачи на разбиения.
  #14  
Старый 10.06.2009, 06:08
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

>требует каких-то модулей или функций, а у меня Паскаль.

функцию Min написать самостоятельно
вместо функции inttostr использовать процедуру Str

>где публикуется именно этот вариант задачи на разбиения.
Именно этот - не знаю, может, и нигде не публикуется
В общем про разбиения - гуглить Integer Partitions

Последний раз редактировалось MBo, 10.06.2009 в 06:10.
  #15  
Старый 10.06.2009, 19:38
Новичок

Отправить личное сообщение для konstantin Посмотреть профиль Найти все сообщения от konstantin
 
Регистрация: 08.06.2009
Сообщений: 14

Исправьте, пожалуйста, что-то не получается:


program BBbIBog_cToJI64oB_yHuKaJIbHbIx_Ha_3agaHHyuy_cyMMy;
var lst : string;
K,N,Sum : Integer;
function Min(X, Y: Integer): Integer;
begin
if X > Y then
Min := Y
else
Min := X;
end;
procedure Str(i : Integer; var lst: string);
begin
Str(i, lst);
end;
procedure diff_partitions(Sum, K, N, Minn: Integer; lst: string);
var
i: Integer;
begin
if K = 0 then begin
if Sum = 0 then
Writeln(lst);
Exit;
end;
for i := Minn to Min(N, Sum) do
diff_partitions(Sum - i, K - 1, N, i+1, lst + ' ' {+ Str(i,lst});
end;
begin
Write('Columns, MaxNumber, SumString :');
ReadLn(K, N, Sum);
diff_partitions(Sum, K, N, lst, ' ');
ReadLn
end.

Следую учебнику, а части кода не стыкуются.

Заранее благодарю
  #16  
Старый 11.06.2009, 08:21
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Интересно, зачем было просить код на Паскале, если с пониманием этого языка очевидные проблемы
Код:
function IntToStr(i : Integer): string;
begin
  Str(i, IntToStr);
end;
  #17  
Старый 11.06.2009, 11:08
Новичок

Отправить личное сообщение для konstantin Посмотреть профиль Найти все сообщения от konstantin
 
Регистрация: 08.06.2009
Сообщений: 14

Все равно не работает.

MBo(Цитата):
"Интересно, зачем было..."
А разве не видно по постам, что я не программист? Этот синий
экран - тройка месяцев, как увидел впервые, а за Вами, наверное,
вуз и жизнь, посвященная программированию. Согласитесь, просить
сделать таблицу (а она мне нужна а не программирование) было бы еще
более странно. Обращаюсь с просьбой, а меня строят в позу ученика.
Если надо заплатить, я не против.
  #18  
Старый 11.06.2009, 11:17
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Код:
program dp;

var 
  K,N,Sum : Integer;

function Min(X, Y: Integer): Integer;
begin
  if X > Y then
    Min := Y
  else
    Min := X;
  end;

function IntToStr(i : Integer): string;
var
  t: string;
begin
  Str(i, t);
  IntToStr := t;
end;

procedure diff_partitions(Sum, K, N, Minn: Integer; lst: string);
var
  i: Integer;
begin
  if K = 0 then begin
    if Sum = 0 then
      Writeln(lst);
    Exit;
  end;
  for i := Minn to Min(N, Sum) do
    diff_partitions(Sum - i, K - 1, N, i+1, lst + ' ' + IntToStr(i));
end;

begin
  Write('Columns, MaxNumber, SumString :');
  ReadLn(K, N, Sum);
  diff_partitions(Sum, K, N, 1, '');
  ReadLn
end.
  #19  
Старый 11.06.2009, 11:25
Новичок

Отправить личное сообщение для konstantin Посмотреть профиль Найти все сообщения от konstantin
 
Регистрация: 08.06.2009
Сообщений: 14

Уважаемые модераторы

Прошу простить за сообщение не по теме. Просьба не удалять мой
последний пост сразу, пусть повисит день, два.

Спасибо

Последний раз редактировалось konstantin, 11.06.2009 в 16:18.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Агоритм выделение суммы полных квадратов Jim Математические алгоритмы 4 19.10.2009 00:09
последовательности длины N из чисел 1,2..M на заданную сумму элементов строки mayasar Оффтопик 9 20.03.2009 22:18
Задача оплаты суммы с помощью ограниченого количества банкнот pro Математические алгоритмы (другое) 8 23.12.2008 21:16
Корень из суммы квадратов Michael_K Математические алгоритмы (другое) 19 15.04.2008 01:07
Помагите написать алгоритм выплаты суммы денег... гость Задачи 1 22.10.2007 23:00