<?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=407625&amp;view=findpost&amp;p=3646695</guid>
        <pubDate>Wed, 13 Jan 2016 09:38:10 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646695</link>
        <description><![CDATA[JoeUser: На счет одного значения - согласен, но если все передавать по указателю или ссылке - будет не то. <br>Хотя, если уж по уму, ... тогда вообще нету смысла этот параметр использовать в функции, а просто сделать глобальную переменную (константу).]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646694</guid>
        <pubDate>Wed, 13 Jan 2016 09:30:53 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646694</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646691'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2016-01-13T08:53:33+00:00">13.01.16, 08:53</time></span><div class='quote '>Попробуй свой совет осуществить и увидишь неработающий вариант. :lol: Учитель блин. :lol:</div></div><br>
Твой вариант: <a class='tag-url' href='http://ideone.com/mYQlxh' target='_blank'>http://ideone.com/mYQlxh</a><br>
Твой измененый вариант: <a class='tag-url' href='http://ideone.com/nGAher' target='_blank'>http://ideone.com/nGAher</a><br>
ЗЫЖ<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Учитель блин. :lol:</div></div>]]></description>
        <author>KILLER</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646691</guid>
        <pubDate>Wed, 13 Jan 2016 08:53:33 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646691</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646686'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KILLER &#064; <time class="tag-quote__quoted-time" datetime="2016-01-13T08:43:24+00:00">13.01.16, 08:43</time></span><div class='quote '>Лучше бы ты сэкономил на передаче параметров в функцию. Сейчас ты вектора и мапы передаешь туда по значению, что приводит к копированию содержимого контейнеров во внутренюю переменную при каждом вызове функции и передаче туда контейнеров - это крайне неэффективно, надо по ссылке или хотя бы по указателю. </div></div><br>
<br>
Именно так и надо&#33; Мне там нужны <strong class='tag-b'>локальные копии</strong>&#33; Попробуй свой совет осуществить и увидишь неработающий вариант. :lol: Учитель блин.  :lol:]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646686</guid>
        <pubDate>Wed, 13 Jan 2016 08:43:24 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646686</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646655'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2016-01-13T01:31:35+00:00">13.01.16, 01:31</time></span><div class='quote '>Экономим на вызовах :)</div></div><br>
Лучше бы ты сэкономил на передаче параметров в функцию. Сейчас ты вектора и мапы передаешь туда по значению, что приводит к копированию содержимого контейнеров во внутренюю переменную при каждом вызове функции и передаче туда контейнеров - это крайне неэффективно, надо по ссылке или хотя бы по указателю.]]></description>
        <author>KILLER</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646655</guid>
        <pubDate>Wed, 13 Jan 2016 01:31:35 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646655</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646593'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black*Eternal &#064; <time class="tag-quote__quoted-time" datetime="2016-01-12T16:01:46+00:00">12.01.16, 16:01</time></span><div class='quote '>По неоптимальности - очень интересный вопрос. Честно говоря, даже не представляю, в чём она не оптимальна?</div></div><br>
Проверку очередной вершины нужно делать не в теле функции, а до входа в нее. Экономим на вызовах :)]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646593</guid>
        <pubDate>Tue, 12 Jan 2016 16:01:46 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646593</link>
        <description><![CDATA[Black*Eternal: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646509'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2016-01-11T19:22:06+00:00">11.01.16, 19:22</time></span><div class='quote '>Фиксю  </div></div><br>
Блин, ничего себе. Вот это решение... Удивило, что оно настолько короткое. Сейчас буду разбираться, спасибо&#33;<br>
<br>
По неоптимальности - очень интересный вопрос. Честно говоря, даже не представляю, в чём она не оптимальна? :)]]></description>
        <author>Black*Eternal</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646509</guid>
        <pubDate>Mon, 11 Jan 2016 19:22:06 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646509</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=407625&view=findpost&p=3646496'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Black*Eternal &#064; <time class="tag-quote__quoted-time" datetime="2016-01-11T16:45:37+00:00">11.01.16, 16:45</time></span><div class='quote '>Может кто поможет пофиксить?</div></div><br>
Фиксю  :lol: <a class='tag-url' href='http://ideone.com/PFR51b' target='_blank'>Онлайн-тест тут</a>.<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">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">#include &#60;map&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">typedef std::vector&#60;uint&#62; PathType;</div><div class="code_line">typedef std::map&#60;uint,bool&#62; VisType;</div><div class="code_line">typedef std::map&#60;uint,std::vector&#60;uint&#62;&#62; RelType;</div><div class="code_line">&nbsp;</div><div class="code_line">void PrintPath(uint I, PathType P, VisType V, RelType R) {</div><div class="code_line">&nbsp;&nbsp;if (V.find(I) != V.end()) return;</div><div class="code_line">&nbsp;&nbsp;P.push_back(I); V[I]=true;</div><div class="code_line">&nbsp;&nbsp;for(const auto&amp; x: P) std::cout &#60;&#60; &quot;:&quot; &#60;&#60; x; std::cout &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp;for(const auto&amp; i: R[I]) PrintPath(i,P,V,R);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp;VisType Vis;</div><div class="code_line">&nbsp;&nbsp;PathType Path;</div><div class="code_line">&nbsp;&nbsp;RelType Rel = {</div><div class="code_line">&nbsp;&nbsp; &nbsp;{0,{1,5,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{1,{0,2,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{2,{1,3,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{3,{2,4,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{4,{3,5,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{5,{0,4,6}},</div><div class="code_line">&nbsp;&nbsp; &nbsp;{6,{0,1,2,3,4,5}}</div><div class="code_line">&nbsp;&nbsp;};</div><div class="code_line">&nbsp;&nbsp;for(auto const&amp; i:Rel) PrintPath(i.first,Path,Vis,Rel);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-01-11T19:35:56+00:00">11.01.16, 19:35</time></span></span><br>
Add: Программулина, вроде правильная, но не оптимальная. Вопрос ТС - а в чем &quot;неоптимальность&quot;? ;)]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646496</guid>
        <pubDate>Mon, 11 Jan 2016 16:45:37 +0000</pubDate>
        <title>Перебор всех значений связанного графа. Помогите разобраться в чём проблема...</title>
        <link>https://forum.sources.ru/index.php?showtopic=407625&amp;view=findpost&amp;p=3646496</link>
        <description><![CDATA[Black*Eternal: Есть граф, элементы которого связаны по схеме:<br>
<img class='tag-img' src='http://s013.radikal.ru/i322/1601/ba/7ee5be3d71d0.png' alt='user posted image'><br>
<br>
Элементы - простые индексы от 0 до 6 включительно.<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">0, 1</div><div class="code_line">0, 1, 2, 6, 5</div><div class="code_line">0, 1, 2, 6, 5, 4</div><div class="code_line">0, 5, 6, 4</div><div class="code_line">....</div></ol></div></div></div></div><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">void goElement( std::vector&#60; std::vector&#60; unsigned short &#62; &#62; &amp;relationsArr, unsigned short goElementId, std::vector&#60; unsigned short &#62; visitedIndexesPathArr ) {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;\nВход в элемент: %i\n&quot;, goElementId );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Проверяем пути для посещения - если имеются для текущего элемента:</div><div class="code_line">&nbsp;&nbsp; &nbsp;for ( unsigned short i = 0; i &#60; relationsArr[ goElementId ].size(); i++ ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;\t&#62; Возможный путь: %i для %i элемента&quot;, relationsArr[ goElementId ][ i ], goElementId );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bool notVisited = true; // Проверяем - не посещали ли мы relationsArr[ goElementId ][ i ] (возможный путь для посещения) уже в нашем пути</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for ( unsigned short i1 = 0; notVisited &amp;&amp; ( i1 &#60; visitedIndexesPathArr.size() ); i1++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( relationsArr[ goElementId ][ i ] == visitedIndexesPathArr[ i1 ] )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;notVisited = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( notVisited ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf( &quot; - не посещён! Посещаем...\n&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;visitedIndexesPathArr.push_back( relationsArr[ goElementId ][ i ] ); // запоминаем его как посещённый</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goElement( relationsArr, relationsArr[ goElementId ][ i ], visitedIndexesPathArr ); // Посещаем следующий</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf( &quot; - посещён\n&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;\t\tВсе посещены, финальный путь: &quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp;for ( unsigned short i2 = 0; i2 &#60; visitedIndexesPathArr.size(); i2++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;%i, &quot;, visitedIndexesPathArr[ i2 ] );</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;\n&quot; );</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60; std::vector&#60; unsigned short &#62; &#62; relationsArr { </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{1,5,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{0,2,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{1,3,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{2,4,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{3,5,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{0,4,6},</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{0,1,2,3,4,5}</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60; unsigned short &#62; visitedIndexesPathArr;</div><div class="code_line">&nbsp;&nbsp; &nbsp;visitedIndexesPathArr.push_back( 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;goElement( relationsArr, 0, visitedIndexesPathArr );</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>Black*Eternal</author>
        <category>C/C++: Прочее</category>
      </item>
	
      </channel>
      </rss>
	