<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94403</guid>
        <pubDate>Sat, 19 Oct 2002 15:09:02 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94403</link>
        <description><![CDATA[Cubloid: Всем огромное спасибо за участие в обсуждении.<br>Проблема нашла свое решение.<br>Хотя если у кого-то есть более быстрое решение.<br>Милости просим, всегда готов рассмотреть.<br>Всем еще раз спасибо.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94402</guid>
        <pubDate>Wed, 16 Oct 2002 19:09:20 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94402</link>
        <description><![CDATA[Cubloid: Вообщем всем спасибки.<br>Особенно за последний пост Esperanto.<br>В результате на коленках реализовал следущее<br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br><br>int main()<br>{<br> &nbsp; &nbsp; &nbsp; &nbsp;char str[20];<br> &nbsp; &nbsp; &nbsp; &nbsp;strcpy(str,&quot;111223&quot;);<br> &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;1\t\%s\n&quot;,str);<br> &nbsp; &nbsp; &nbsp; &nbsp;int n;<br> &nbsp; &nbsp; &nbsp; &nbsp;int k;<br> &nbsp; &nbsp; &nbsp; &nbsp;int t;<br> &nbsp; &nbsp; &nbsp; &nbsp;int y;<br> &nbsp; &nbsp; &nbsp; &nbsp;n=strlen(str)-1;<br> &nbsp; &nbsp; &nbsp; &nbsp;int ttt=1;<br>while(ttt++)<br>{<br> &nbsp; &nbsp; &nbsp; &nbsp;k=n-1;<br> &nbsp; &nbsp; &nbsp; &nbsp;while ((str[k]&gt;=str[k+1])&amp;&amp;(k&gt;=0)) k--;<br> &nbsp; &nbsp; &nbsp; &nbsp;if (k&lt;0) {return(0);}<br> &nbsp; &nbsp; &nbsp; &nbsp;t=k+1;<br> &nbsp; &nbsp; &nbsp; &nbsp;while ((t&lt;n)&amp;&amp;(str[t+1]&gt;str[k])) t++;<br> &nbsp; &nbsp; &nbsp; &nbsp;y=str[k];<br> &nbsp; &nbsp; &nbsp; &nbsp;str[k]=str[t];<br> &nbsp; &nbsp; &nbsp; &nbsp;str[t]=y;<br> &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;\%d\t\%s\t&quot;,ttt,str);<br> &nbsp; &nbsp; &nbsp; &nbsp;t=0;<br> &nbsp; &nbsp; &nbsp; &nbsp;while (t&lt;(int)((double)(n-k)/2.0))<br> &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;y=str[n-t];<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str[n-t]=str[k+1+t];<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str[k+1+t]=y;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t++;<br> &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;\%s\n&quot;,str);<br>}<br>}<br></div></div><br><br>]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94401</guid>
        <pubDate>Wed, 16 Oct 2002 06:43:34 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94401</link>
        <description><![CDATA[esperanto: вот &nbsp;алгоритм<br><br>для простоты рассмотрим числа 1 2 3 а не -1 0 1 но это не меняет сути<br><br>поясню с помощью примере &nbsp;пусть есть числа 1 1 1 2 2 3<br><br>пусть начинаем с наименьшего числа и хотим в конце получить наибольшее<br><br>тоесть &nbsp; 111223 &nbsp;первое число и соответственно<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 322111 &nbsp;последнее<br><br>и так как делать переход от одного числа к последующему? достаточно просто. если посмотреть на последнее число с конца то можно увидеть что его цифры дают не убывающию последовательность! ага.<br><br>и так ищем первую цифру с конца которая нарушает неубывающию последовательность<br><br>например для &nbsp; &nbsp;111322 &nbsp;<br>мы видим что это правая единица<br>второй этап из всех чисел от правой единицы выбираем то которое меньше всего, в нашем случае 2 <br>на место 1 пишем два<br>получили 112 &nbsp;а оставшиеся числа сортируем и приписываем в возтастающем порядке<br>то есть получим<br>112123<br><br>и тп.<br>по алгоритму получаем<br>112132<br>112213<br><br>время построение линейно, и меньшего с точки зрения комплексити не добиться ибо надо пройти все числа числа<br><br> с наилучшими<br>]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94400</guid>
        <pubDate>Tue, 15 Oct 2002 14:11:50 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94400</link>
        <description><![CDATA[Demo_S: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Cubloid, 14.10.02, 18:09:26</span><div class='quote '><br> Demo_S, написанный вами выше вариант, как я понял. Очень похож на приведенный мною выше?<br></div></div><br>да, только я делал основной упор на общую идею... а привел какую-то реализацию, первую что пришла в голову.. которая совпадает с твоей идеей.:):)<br>наверняка можно ускорить...:)<br>тем более посмотри то что предложил тебе Губанов... там тоже длинное не всегда правлипьное осуждение.. но к чему-то оно привело:)<br>ЗЫ почему ты думаешь, что этот способо будет медленным? ИМХО все зависит от того, как написать:)<br>]]></description>
        <author>Demo_S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94399</guid>
        <pubDate>Tue, 15 Oct 2002 10:43:23 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94399</link>
        <description><![CDATA[S.Yu.Gubanov: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Cubloid, 10.10.02, 20:02:38</span><div class='quote '>Есть три натуральных числа - начальные условия.<br>N - длина последовательности.<br>K+ - количество +1 в последлвательности.<br>K-  - количество -1 в последлвательности.<br>________________________________________________<br>Пример:<br>N=8; K+=3; K-=2;<br>{+1,-1,0,0,-1,+1,+1,0} - случайная последовательность составленная на основе представленных выше начальных условий.<br>_________________________________________________<br>Необходимо разработать алгоритм, который очень быстро сможет перебрать все возможные УНИКАЛЬНЫЕ последовательности, удовлетворяющие начальным условиям</div></div><br>Обозначьте &quot;-1&quot; буквой &quot;a&quot;, &quot;0&quot; буквой &quot;b&quot;, &quot;+1&quot; буквой &quot;c&quot;. Вам надо сгенерировать все слова из N букв, в которых буква &quot;a&quot; встречается K_a раз, буква &quot;b&quot; встречается K_b - раз, буква &quot;c&quot; - K_c - раз (K_a + K_b + K_c = N). Так? Но такая задача уже была решена сдесь месяц назад (только там была еще четвертая буква &quot;d&quot;, но это неважно). Вот ссылка на решение:<br><br>kabilov 12.09.02 10:04:32 <br><br>http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=algorithm;action=display;num=1031810672<br>]]></description>
        <author>S.Yu.Gubanov</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94397</guid>
        <pubDate>Mon, 14 Oct 2002 14:09:26 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94397</link>
        <description><![CDATA[Cubloid: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Cubloid, 09.10.02, 12:10:32</span><div class='quote '><br>Соответственно для трех значений я единственное что придумал, так это:<br>n=6;<br>k+=3;<br>k-=2;<br>1) Сохраняем две последоваетльности, перебираем сначала вторую до конца, сбрасываем, потом передвигаем первую на одну позицию и опять вторую по циклу.<br><br>первая &nbsp; &nbsp;вторая &nbsp; результат<br>111000 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 111--0<br>111000 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 111-0-<br>111000 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1110--<br><br>Второй цикл.<br>110100 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 11-1-0<br>110100 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 11-10-<br>110100 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1101--<br>Третий цикл.<br>101100 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 1-11-0<br>101100 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 1-110-<br>101100 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1011--<br>И так далее...<br>Вроде должно все перебрать, но это медленно, особенно необходимость слияния удручает.<br></div></div><br> Demo_S, написанный вами выше вариант, как я понял. Очень похож на приведенный мною выше?<br>Или я в чем-то не прав?<br>Спасибо за поддержку.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94396</guid>
        <pubDate>Sat, 12 Oct 2002 16:37:48 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94396</link>
        <description><![CDATA[Demo_S: думал, над этим троичным xor'om:):):)... может и можно как-нить, только это не прсолсто будет реализовать имхо.. или я чего-то не понимаю.<br>фишка в том, что количества &quot;-1&quot;, &quot;0&quot; и &quot;1&quot; не должны менятся.<br><br><br>по поводу идеи попытаюсь еще раз коротко и понятненько:):)<br>пусть есть функция, которая может всеми способами разместить m элементов в массиве из n элементов. <br>n&gt;m<br><br>(размещаем например 3 единички в массиве из 5 элементов)<br>11100<br>11010<br>11001<br>10110<br>10101<br>10011<br>01110<br>01101<br>01011<br>00111<br><br>вот.:)<br><br>этой функцией сначала размещаем в нашем массиве большом все &quot;-1&quot; каким-нить из способов,<br>потом на оставшиеся места размещаем &quot;0&quot;, всеми способами, которыми можно, <br>берем следующий способ размещения &quot;-1&quot;. для него снова смотрим все способы размещения &quot;0&quot;...<br>таким образом мы переберем все варианты.. доказательство того, что ткаим образом просмотрим все варианты размещения легко из комбинаторики:) если надо приведу.<br><br>а вот &nbsp;над реализацией этой функции размещения надо подумать, чтобы она работала быстро...(для работы этой функции придется хранить предыдущее размещение, чтобы она правильно все генерила последующее, причем запомнить только одно предыдущее хватит, тк на его основе можно построить и новое размещение для &quot;0&quot;, и новое размещение для &quot;-1&quot;.<br>)<br><br>да, естественно, что единицами заполняются все оставщиеся не запоненными места.<br><br>понятно/нет?<br><br>могу еще пример:)<br>или надо реализацию этой функции? (над жтим еще не думал:)]]></description>
        <author>Demo_S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94395</guid>
        <pubDate>Sat, 12 Oct 2002 01:18:34 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94395</link>
        <description><![CDATA[shalomman: 2Demo_S<br><br>это типа xor в тоичной системе исчисления<br><br>обьясни пожалуйста вторую часть. я не очень понял. (если не трудно)]]></description>
        <author>shalomman</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94394</guid>
        <pubDate>Fri, 11 Oct 2002 22:12:31 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94394</link>
        <description><![CDATA[Demo_S: 2Cubloid<br>и что , в єтом случае такой способ слишком медленный?<br>2shalomman что есть вычет по модулю 3?<br><br>появилась такая идея.. надо подумать над реализацией.<br>не знаю насколько она будет быстрой, но приведу:)<br><br>запоминаем кол-во &quot;-1&quot;, &quot;0&quot; и &quot;1&quot;<br>пусть &quot;-1&quot; будет m, а нулей будет k, и длина числа (массива) n<br>нц<br> &nbsp; располагаем сначала в нашем массиве все &quot;-1&quot;.<br> &nbsp; нц<br> &nbsp; &nbsp; &nbsp;на оставшиеся места располагаем нули<br> &nbsp; &nbsp; &nbsp;(располагаем в массиве длиной n-m нули, и переносим в первый массив)<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; заполняем оставшиеся места &quot;1&quot;-цами<br> &nbsp; &nbsp; работаем с массивом<br> &nbsp; <br> &nbsp; &nbsp; удаляем из массива все нули и единицы<br> &nbsp; кц<br> &nbsp;очищаем массив<br>кц<br><br>для реализации нужна функция, которая имея на входе массив, число n длину массива и число m, количество элементов, которые надо расположить, и зная предыдущее расположение, расположит m элементов в массиве. (в этом массиве каждый элемент имеет только 2 значения 0 (не путать с &quot;0&quot;) &nbsp;- элемент в даную ячейку не положен, и 1= в данной ячейке распложен элемент)<br><br>таким образом задачу о расположении элементов трех типов свели к задаче о расположении элментов двух типов. (вот ещеэту задачу надо красиво решить, и все будет ок:) )<br><br>ЗЫ блин, кривовато получилось... если не понятна мысль, пишите, попробую более ясно ее выразить:)]]></description>
        <author>Demo_S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94393</guid>
        <pubDate>Fri, 11 Oct 2002 21:54:15 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94393</link>
        <description><![CDATA[shalomman: Если я правильно понял, то можно проходом с вычитом по модулю 3.]]></description>
        <author>shalomman</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94392</guid>
        <pubDate>Fri, 11 Oct 2002 06:47:10 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94392</link>
        <description><![CDATA[Cubloid: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Demo_S, 11.10.02, 00:54:42</span><div class='quote '><br>ЗЫ при инкременте не нужно будет подсчитывать каждый раз кол-во всех 1, -1, 0<br>достаточно хранить три переменных, в которых будут количества этих элементов... а их придобаулении очередной 1 изменять..<br>и проверть только их:)<br></div></div><br>Прав абсолютно, я так по началу и делал, когда начальные условия состояли только из N.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94391</guid>
        <pubDate>Thu, 10 Oct 2002 23:33:52 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94391</link>
        <description><![CDATA[Fantasist: Что-то я не понимаю, какие там такие особенности. Если в них дело, то надо их, наверное привести. А так инкрементом можно решить в любом случае. Необязательно даже переводить последовательность во что-то еще - достаточно помнить последнюю последовательность, максимально возможный элемент(1) и минимально возможный(-1)]]></description>
        <author>Fantasist</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94390</guid>
        <pubDate>Thu, 10 Oct 2002 20:54:42 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94390</link>
        <description><![CDATA[Demo_S: особенность понял, будем думать.. решение обещает быть красивым:)<br>ЗЫ при инкременте не нужно будет подсчитывать каждый раз кол-во всех 1, -1, 0<br>достаточно хранить три переменных, в которых будут количества этих элементов... а их при добавлении очередной &quot;1&quot; изменять..<br>и проверять только их:)<br><br>хотя может быть можно как-нить сдвигами.. было нечо похожее по алгебре\%)]]></description>
        <author>Demo_S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94389</guid>
        <pubDate>Thu, 10 Oct 2002 16:02:38 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94389</link>
        <description><![CDATA[Cubloid: Есть три натуральных числа - начальные условия.<br>N - длина последовательности.<br>K+ - количество +1 в последлвательности.<br>K- &nbsp;- количество -1 в последлвательности.<br>________________________________________________<br>Пример:<br>N=8; K+=3; K-=2;<br>{+1,-1,0,0,-1,+1,+1,0} - случайная последовательность составленная на основе представленных выше начальных условий.<br>_________________________________________________<br>Необходимо разработать алгоритм, который очень быстро сможет перебрать все возможные УНИКАЛЬНЫЕ последовательности, удовлетворяющие начальным условиям. При этом нельзя сохранить список всех уже найденных последовательностей, а только последнюю.<br>Не понятно?<br>Еще проще - перестановки символов в строке, исключая &nbsp;повторения строки.<br>Что конкретно не понятно?<br><br>Чуть выше я описал свой алгоритм, который удовлетворяет меня, но только для случая из двух элементов 0,1, а для трех {-1,0,+1} я не нашел приемлимого решения, но есть одно описанное тоже выше.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94388</guid>
        <pubDate>Thu, 10 Oct 2002 15:37:57 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94388</link>
        <description><![CDATA[esperanto: третьий раз прочел так и не понял что спрашивается<br>если можно поподробней]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94387</guid>
        <pubDate>Thu, 10 Oct 2002 14:47:24 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94387</link>
        <description><![CDATA[Cubloid: Все особенности прислал :)))<br><br>Я понимаю, что не самый простой вопрос и сходу его не решить. Может хоть какие нибудь догадки у кого-то есть.<br>Помогите, давно уже вопрос мучает.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94386</guid>
        <pubDate>Wed, 09 Oct 2002 08:10:32 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94386</link>
        <description><![CDATA[Cubloid: Инкрементирование не подходит, потому что в один проход надо сохранить изначальное число 0,1 и -1.<br>А при инкременте надо будет считать каждый раз количество оных и откидывать лишнее.<br>Но также еще число большое...<br>Я придумал алгоритм для 0 и 1:<br>n=5;<br>k1=3;<br><br>1) Заполняем слева единичками.<br>11100<br>2) Нумеруем их.<br>123<br>11100<br>3) 1 двигаются между единицами и ноликами, то есть их последовательность согласно нумерации никогда не меняется и две 1 никогда не меняются местами.<br>4) Находим первую которая может двигаться.<br>Перемещаем и запоминаем какую.<br>11010 3<br>Находим опять первую которая может двигаться, двигаем.<br>10110 2<br>Находим опять первую которая может двигаться, двигаем.<br>01110 1<br>5) Но если при предыдущим движением подвинули первую, &nbsp;то ищем первую какую можно передвинуть, передвигаем ее запоминаем, а все что до нее передвигаем в крайнее левое положение.<br>11001 3<br>10101 2<br>01101 1<br>Опять тоже самое.<br>10011 2<br>01011 1<br>Опять тоже самое, но слева ничего не осталось вот все.<br>00111 1<br>Конец перестановок. Впринципе дополнительное число можно наверное не запоминать.<br>Соответственно для трех значений я единственное что придумал, так это:<br>n=6;<br>k+=3;<br>k-=2;<br>1) Сохраняем две последоваетльности, перебираем сначала вторую до конца, сбрасываем, потом передвигаем первую на одну позицию и опять вторую по циклу.<br><br>первая &nbsp; &nbsp;вторая &nbsp; результат<br>111000 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 111--0<br>111000 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 111-0-<br>111000 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1110--<br><br>Второй цикл.<br>110100 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 11-1-0<br>110100 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 11-10-<br>110100 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1101--<br>Третий цикл.<br>101100 &nbsp; --0 &nbsp; &nbsp; &nbsp; &nbsp; 1-11-0<br>101100 &nbsp; -0- &nbsp; &nbsp; &nbsp; &nbsp; 1-110-<br>101100 &nbsp; 0-- &nbsp; &nbsp; &nbsp; &nbsp; 1011--<br>И так далее...<br>Вроде должно все перебрать, но это медленно, особенно необходимость слияния удручает.<br>Есть какие-нибудь соображения?<br>Заранее благодарен...]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94385</guid>
        <pubDate>Tue, 08 Oct 2002 20:30:35 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94385</link>
        <description><![CDATA[Demo_S: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Cubloid, 08.10.02, 16:50:38</span><div class='quote '>Есть последовательность M из n~10000 элементов.<br>Каждай элемент может иметь значения из множества {-1,0,1}.<br>В связи с определнной особенностью задачи нельзя последовательность записать в троичной системе как число и перебирать инкрементируя число.<br>...</div></div><br><br>особенность в студию плз..:)<br>тк никак кроме инкремента (или производных от него, типа декремента) вроде бы не получитьс, тк придется хранить все ранее нагенеренные последовательности...<br>а это много памяти надо<br>]]></description>
        <author>Demo_S</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94384</guid>
        <pubDate>Tue, 08 Oct 2002 12:50:38 +0000</pubDate>
        <title>Ищется алгоритм перестановки.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9831&amp;view=findpost&amp;p=94384</link>
        <description><![CDATA[Cubloid: Есть последовательность M из n~10000 элементов.<br>Каждай элемент может иметь значения из множества {-1,0,1}.<br>В связи с определнной особенностью задачи нельзя последовательность записать в троичной системе как число и перебирать инкрементируя число.<br>Необходим алгоритм, который бы позволял из M получить M' - следующую последовательность, которая бы отличалась от всех предыдущих, полученых этим же алгоритмом. Алгоритм может использовать дополнительные данные, например: номер позиции которую переставили в последний раз.<br>Нужен:<br>1) Алгоритм.<br>2) Как составить начальную последовательность.<br>3) Какой будет конечная последовательность.<br>4) И краткие коментарии.<br><br><br>ПС) Ну или хотя бы идеи...]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	