<?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=9170&amp;view=findpost&amp;p=90097</guid>
        <pubDate>Mon, 15 Sep 2003 12:04:16 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90097</link>
        <description><![CDATA[Visitor: Насколько я смог разобраться в ChooseShag -- да, в точности то же решение, что получилось у меня:<br><br>Отличие от &quot;классического&quot; только в одном: <em class='tag-i'>перед</em> тем, как переместить какой-либо диск, проверяем, <em class='tag-i'>надо</em> ли его вообще перемещать.<br><br>Вот еще вариант решения (массив с состояниями стержней только для того, чтобы было удобнее смотреть на состояние етой ханойской башни, вообще-то он и добрая половина кода не нужны :) ):<br><br><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&#60;br&#62;#include &#60;stdio.h&#62;&#60;br&#62;#include &#60;stdlib.h&#62;&#60;br&#62;&#60;br&#62;/*****************************************************************&#60;br&#62;* Входные данные: строка вида 1232131211131... -- номера стержней,&#60;br&#62;* на которые помещается очередной диск.&#60;br&#62;* Диски кладутся на стержни, начиная с самого большого, и&#60;br&#62;* заканчивая самым маленьким. Цифра строки показывает, на какой&#60;br&#62;* стержень класть очередной диск.&#60;br&#62;* Программа ищет оптимальный алгоритм перемещения всех дисков на&#60;br&#62;* стрежень №1&#60;br&#62;*****************************************************************/&#60;br&#62;&#60;br&#62;int aces[3][1000];&#60;br&#62;int ndisks;&#60;br&#62;&#60;br&#62;/*****************************************************************&#60;br&#62;* В массиве aces[][] хранится текущее состояние стержней (номера&#60;br&#62;* дисков, которые на них лежат). Самый большой диск обозначен&#60;br&#62;* номером 1, самый маленький -- N (число дисков).&#60;br&#62;* Нижнему диску на стержне соответствует первый элемент массива&#60;br&#62;*****************************************************************/&#60;br&#62;&#60;br&#62;/* Ввод начального состояния стержней */&#60;br&#62;void read_initial_state();&#60;br&#62;&#60;br&#62;/* Найти алгоритм перемещения диска i и всех меньших дисков на&#60;br&#62;стержень ato. Функция выполняет перемещение (изменяет состояние&#60;br&#62;aces[][]; кроме того, функция выводит на екран ето перемещение в&#60;br&#62;виде &quot;(i) afrom-&#62;ato&quot;, где i -- номер диска, afrom -- номер&#60;br&#62;стержня, с которого перемещается диск, ato -- номер стержня, на&#60;br&#62;который перемещается диск */&#60;br&#62;void find_and_do_move(int, int);&#60;br&#62;&#60;br&#62;int main(int argc, char* argv[])&#60;br&#62;{&#60;br&#62; &nbsp; &nbsp; &nbsp;memset(aces, 0, sizeof(aces));&#60;br&#62; &nbsp; &nbsp; &nbsp;read_initial_state();&#60;br&#62; &nbsp; &nbsp; &nbsp;if(ndisks &#60; 1)&#60;br&#62; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;puts(&quot;Дайте хотя бы один диск!\n&quot;);&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return 1;&#60;br&#62; &nbsp; &nbsp; &nbsp;}&#60;br&#62; &nbsp; &nbsp; &nbsp;find_and_do_move(1, 0);&#60;br&#62; &nbsp; &nbsp; &nbsp;return 0;&#60;br&#62;}&#60;br&#62;&#60;br&#62;void read_initial_state()&#60;br&#62;{&#60;br&#62; &nbsp; &nbsp; &nbsp;char buf[1000];&#60;br&#62; &nbsp; &nbsp; &nbsp;int *pace;&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;char *pbuf = buf;&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;memset(buf, 0, sizeof(buf));&#60;br&#62; &nbsp; &nbsp; &nbsp;fgets(buf, sizeof(buf)-1, stdin);&#60;br&#62; &nbsp; &nbsp; &nbsp;ndisks = 0;&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;while(*pbuf)&#60;br&#62; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if((*pbuf &#62;= &#39;1&#39;) &amp;&amp; (*pbuf &#60;= &#39;3&#39;))&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ndisks++;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pace = aces[*pbuf-&#39;1&#39;];&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while(*pace) pace++;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*pace = ndisks;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pbuf++;&#60;br&#62; &nbsp; &nbsp; &nbsp;}&#60;br&#62;}&#60;br&#62;&#60;br&#62;void find_and_do_move(int i, int ato)&#60;br&#62;{&#60;br&#62; &nbsp; &nbsp; &nbsp;int a, p;&#60;br&#62; &nbsp; &nbsp; &nbsp;/* Найти номер стержня, на котором лежит диск №i */&#60;br&#62; &nbsp; &nbsp; &nbsp;for(a=0; a&#60;3; a++)&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(p=0; aces[a][p] != 0; p++)&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(aces[a][p] == i) goto l_found;&#60;br&#62;l_found:&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;/* Номер стержня в a, позиция на стержне в p */&#60;br&#62;&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;if(i == ndisks) /* Самый маленький диск сразу перемещаем */&#60;br&#62; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* Вот етот &quot;лишний&quot; оператор if и является отличием от&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;классического&quot; решения */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(a != ato) /* Смысл: &quot;нужно ли вообще перемещать етот диск?&quot; */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aces[a][p] = 0; /* Сняли диск */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(p=0; aces[ato][p] != 0; p++); /* Нашли, куда его положить */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aces[ato][p] = i; /* И положили */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;(\%i) \%i-&#62;\%i\n&quot;, i, a+1, ato+1); /* И напечатали */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;&#60;br&#62; &nbsp; &nbsp; &nbsp;}&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;/* Вот етот &quot;лишний&quot; оператор if и является отличием от&#60;br&#62; &nbsp; &nbsp; &nbsp;&quot;классического&quot; решения */&#60;br&#62; &nbsp; &nbsp; &nbsp;if(a != ato) /* Смысл: &quot;нужно ли вообще перемещать етот диск?&quot; */&#60;br&#62; &nbsp; &nbsp; &nbsp;{&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* НЕ самый маленький перемещаем более сложным способом */&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* Сначала переместим все меньшие диски на третий стержень */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;find_and_do_move(i+1, 3-a-ato);&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* Теперь перемещаем диск i */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aces[a][p] = 0; /* Сняли диск */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(p=0; aces[ato][p] != 0; p++); /* Нашли, куда его положить */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aces[ato][p] = i; /* И положили */&#60;br&#62; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;(\%i) \%i-&#62;\%i\n&quot;, i, a+1, ato+1); /* И напечатали */&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;}&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;/* Здесь диск i уже лежит на нужном месте */&#60;br&#62;&#60;br&#62; &nbsp; &nbsp; &nbsp;/* Теперь складываем все меньшие диски на наш диск i */&#60;br&#62; &nbsp; &nbsp; &nbsp;find_and_do_move(i+1, ato);&#60;br&#62;}&#60;br&#62;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90096</guid>
        <pubDate>Mon, 15 Sep 2003 09:34:35 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90096</link>
        <description><![CDATA[Trurl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>esperanto, 15.09.03, 10:57:23</span><div class='quote '>решение есть в журнале квант<br></div></div><br>Спасибо.<br>]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90095</guid>
        <pubDate>Mon, 15 Sep 2003 08:37:52 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90095</link>
        <description><![CDATA[Trurl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Visitor, 15.09.03, 10:46:49</span><div class='quote '>Дык дайте сам алгоритм, который без вот етих &quot;procedure SHTRAF&quot; :)<br><br></div></div><br>сам алгоритм: Procedure Choose_Shag]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90094</guid>
        <pubDate>Mon, 15 Sep 2003 06:57:23 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90094</link>
        <description><![CDATA[esperanto: решение есть в журнале квант<br><br>иди в яндекс пиши квант ханойские и вперед]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90093</guid>
        <pubDate>Mon, 15 Sep 2003 06:46:49 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90093</link>
        <description><![CDATA[Visitor: Дык дайте сам алгоритм, который без вот етих &quot;procedure SHTRAF&quot; :)<br><br>]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90092</guid>
        <pubDate>Sun, 14 Sep 2003 10:11:09 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90092</link>
        <description><![CDATA[esperanto: http://www.proza.ru:8004/texts/2001/10/22-97.html]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90091</guid>
        <pubDate>Sat, 13 Sep 2003 11:55:11 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90091</link>
        <description><![CDATA[Булат Шакиров: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Trurl, 13.09.03, 15:14:06</span><div class='quote '><br>предложил Оzzя.<br></div></div><br>Не я :) Мой ученик Илья Кудиров. Найду его e-mail - отправлю к автору, разбирайтесь с ним.<br>]]></description>
        <author>Булат Шакиров</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90090</guid>
        <pubDate>Sat, 13 Sep 2003 11:14:06 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90090</link>
        <description><![CDATA[Trurl: Я не просил доказательства, тем более такого длинного для классического <br>варианта. Оно очевидно. Меня интересует алгоритм из программы,которую &nbsp;<br>предложил Оzzя.<br>]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90089</guid>
        <pubDate>Fri, 12 Sep 2003 17:21:03 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90089</link>
        <description><![CDATA[Visitor: Не смог разобраться в программе по той ссылке, потому, что устал читать не относящиеся к сути алгоритма навороты с графикой. :)<br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Trurl, 12.09.03, 17:06:04</span><div class='quote '>http://194.87.63.15/incoming/hanoj.zip<br><br>Вроде бы то, что надо. Но вопросы остаются.<br>1. Как доказать что этот алгоритм дает оптимальный вариант?<br>2. Нельзя ли найти более простой, подобный известному решению классической задачи? <br></div></div><br><br>1. Ех.... Ну вы сами просили....<br>Доказательство для <em class='tag-i'>классической</em> задачи:<br><br>a, b, c -- номера стержней<br>э -- &quot;принадлежит&quot;<br>a-&gt;b -- операция &quot;перемещение диска со стержня a на стержень b&quot;<br>{} -- в фигурных скобках записывается последовательность перемещений дисков, т.е., алгоритм<br>&#124;A&#124; -- сложность алгоритма A, т.е., длина последовательности или количество перемещений в етом алгоритме<br>a,b,c э [1,2,3],<br>a!=b,<br>a!=c,<br>b!=c<br>Оптимальным алгоритмом будем считать алгоритм с минимальной сложностью<br><br>Ограничение 0. Все диски имеют разный диаметр.<br>Ограничение 1. Перемещать можно только диск, занимающий самое верхнее место на стержне.<br>Ограничение 2. Любой диск может только а) занимать самое нижнее место на стержне или б) лежать на диске большего диаметра. Алгоритм, на каждом шаге которого всегда выполняются ограничения 1 и 2 будем называть корректным.<br>Ограничение 3. Перед началом выполнения алгоритма An(a, b) на стержне a находятся n дисков, помещенные туда с учетом Ограничения 2 (самый большой диск -- внизу), остальные стержни пустые.<br><br>Теорема 1.<br>Пусть An(a, b), a!=b -- оптимальный корректный алгоритм перемещения n дисков со стержня a на стержень b.<br>Тогда An+1(a,b) = {An(a,c),a-&gt;b,An(c,a)} -- оптимальный корректный алгоритм перемещения n+1 дисков со стержня a на стержень b.<br><br>В самом деле, рассмотрим операцию a-&gt;b перемещения самого большого n+1го диска. Она может быть выполнена только тогда, когда 1) на стержне b нет ни одного диска, т.к., все другие диски меньшего диаметра, см. Ограничение 2 и 2) самый большой диск является самым верхним диском на стержне a, см. Ограничение 1. Таким образом, перед перемещением a-&gt;b самого большого диска необходимо выполнить перемещение всех дисков меньшего диаметра на третий стержень c. По условию, оптимальным алгоритмом перемщения n меньших дисков авляется алгоритм An(a,c).<br><br>После перемещения a-&gt;b самого большого n+1го диска, необходимо переместить оставшиеся n дисков на стержень b. По условию, оптимальным алгоритмом такого перемещения является алгоритм An(c,b). Т.о., среди алгоритмов, содержащих перемещение a-&gt;b самого большого n+1го диска, рассматриваемой алгоритм является оптимальным и имеет сложность &#124;An+1(a,b)&#124; = 2*&#124;An(a,b)&#124;+1 (&#124;An(a,b)&#124; = &#124;An(a,c)&#124; = &#124;An(b,c)&#124; из соображений симметрии).<br><br>Легко показать, что алгоритм {...,a-&gt;c,...} где имеется перемещение самого большого n+1го диска a-&gt;c имеет большую сложность, чем рассмотренный выше. Рассуждая аналогично, получим, что корректный алгоритм, содержащий такое перемещение имеет начало такого вида {An(a,b),a-&gt;c}.<br><br>Теперь, чтобы переместить n+1й диск на стержень b необходимо выполнить алгоритм не меньшей сложности, чем {An(b,a),c-&gt;b}. Т.о. сложность алгоритма Bn+1, содержащего перемещение a-&gt;c n+1го диска &#124;Bn+1&#124; &gt;= 2*&#124;An(a,b)&#124;+2 &gt; 2*&#124;An(a,b)&#124;+1 = &#124;An+1(a,b)&#124;.<br><br>Других вариантов перемещения n+1го диска со стержня a, очевидно, нет.<br><br>Следовательно, An+1(a,b) = {An(a,c),a-&gt;b,An(c,a)} таки является оптимальным корректным алгоритмом перемещения n+1 дисков со стержня a на стержень b.<br><br>Теперь индукция.<br><br>Очевидно, что A1(a,b) = {a-&gt;b} является оптимальным алгоритмом перемещения одного диска со стержня a на стержень b.<br>Ипользуя доказанную Теорему 1 мы можем по индукции строить алгоритмы перемещения 2, 3,... n дисков. Все они будут оптимальными и корректными. (Побочный р-т: &#124;An(a,b)&#124; = 2**n - 1)<br><br>Если не лениво, можете построить доказательство для вашей задачи -- оно будет похожим но более длинным (мне -- лениво :) ).<br><br>2. Нет. :) Оно совпадет с красивым &quot;классическим&quot; только в конце.]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90088</guid>
        <pubDate>Fri, 12 Sep 2003 13:06:04 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90088</link>
        <description><![CDATA[Trurl: http://194.87.63.15/incoming/hanoj.zip<br><br>Вроде бы то, что надо. Но вопросы остаются.<br>1. Как доказать что этот алгоритм дает оптимальный вариант?<br>2. Нельзя ли найти более простой, подобный известному решению классической задачи? <br>]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90087</guid>
        <pubDate>Fri, 12 Sep 2003 12:57:16 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90087</link>
        <description><![CDATA[Visitor: А в етом алгоритме тоже ничего нет :) Особенного :)]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90086</guid>
        <pubDate>Fri, 12 Sep 2003 12:47:13 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90086</link>
        <description><![CDATA[Trurl: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Visitor, 11.09.03, 21:37:17</span><div class='quote '> принципиально решение етой задачи не отличается от рекурсивного решения &quot;классической&quot; задачи о ханойской башне ;)</div></div><br>Помните советский анекдот про магазин &quot;Принцип&quot;?]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90085</guid>
        <pubDate>Fri, 12 Sep 2003 11:46:03 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90085</link>
        <description><![CDATA[Visitor: Во, цитирую:<br><br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>esperanto, 11.09.03, 15:03:09</span><div class='quote '>по рекурсии для того чтобы 10 переложить на 1-й вначале надо первые 9 переложить на 2-й для этого надо первые 8 переложить на 1 и т.п<br></div></div><br><br>Дык <em class='tag-i'>примерно</em> такие же соображения будут при решении указанной задачи :)]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90084</guid>
        <pubDate>Fri, 12 Sep 2003 10:28:25 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90084</link>
        <description><![CDATA[esp: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Visitor, 11.09.03, 21:37:17</span><div class='quote '>Даже если диски беспорядочно разбросаны по всем стержням, принципиально решение етой задачи не отличается от рекурсивного решения &quot;классической&quot; задачи о ханойской башне ;)</div></div><br><br><br>это надо доказать<br>имхо на первый взгляд не правильно]]></description>
        <author>esp</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90083</guid>
        <pubDate>Thu, 11 Sep 2003 17:37:17 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90083</link>
        <description><![CDATA[Visitor: Даже если диски беспорядочно разбросаны по всем стержням, принципиально решение етой задачи не отличается от рекурсивного решения &quot;классической&quot; задачи о ханойской башне ;)]]></description>
        <author>Visitor</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90082</guid>
        <pubDate>Thu, 11 Sep 2003 12:08:06 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90082</link>
        <description><![CDATA[Булат Шакиров: http://194.87.63.15/incoming/hanoj.zip]]></description>
        <author>Булат Шакиров</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90081</guid>
        <pubDate>Thu, 11 Sep 2003 11:51:38 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90081</link>
        <description><![CDATA[Trurl: Внимательно читаем условие &nbsp;;). Откуда переложить?]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90080</guid>
        <pubDate>Thu, 11 Sep 2003 11:03:09 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90080</link>
        <description><![CDATA[esperanto: по рекурсии для того чтобы 10 переложить на 1-й вначале надо первые 9 переложить на 2-й для этого надо первые 8 переложить на 1 и т.п<br><br><br>T(n)=2T(n/2)+1]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90079</guid>
        <pubDate>Thu, 11 Sep 2003 10:17:29 +0000</pubDate>
        <title>Ханой++</title>
        <link>https://forum.sources.ru/index.php?showtopic=9170&amp;view=findpost&amp;p=90079</link>
        <description><![CDATA[Trurl: Задача.<br>Даны три стержня ?? 1,2,3. На стержни нанизано некоторое количество (N) дисков разного диаметра, как в детской пирамидке. Все диски расположены на стержнях в порядке уменьшения диаметра снизу вверх.<br>Необходимо найти последовательность перемещений, в результате которой все диски окажутся на стержне ? 1. За один ход можно снять верхний диск с одного стержня и поместить его на пустой стержень или на диск с большим диаметром. <br>]]></description>
        <author>Trurl</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	