<?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=9492&amp;view=findpost&amp;p=92170</guid>
        <pubDate>Fri, 21 Mar 2003 19:57:17 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92170</link>
        <description><![CDATA[albom: Да ну вас, грустно мне сегодня....<br><br>А пришло в голову то, что последовательность с наименьшим штрафом есть повторение некоторого слова, которое можно получить из исходных и некоторых других (если их нет в исходных). Потом мы расширяем все слова до нужной длинны (см вызов функции nok)и сравниваем их штрафы (их уже нужно считать самим). Ну и выбрав слово с наименьшим штрафом повторяем его n раз, и исчем в нем подстроку с минимальным штрафом. Она и есть ответ.]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92169</guid>
        <pubDate>Fri, 21 Mar 2003 19:40:24 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92169</link>
        <description><![CDATA[dark0ut: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>wormball, 21.03.03, 18:30:18</span><div class='quote '>2albom<br><br>работает она или нет, надо спрашивать у паскаля. ты бы написал, в чём заключается алгоритм и в чём его отличие от перебора, а то прислал здоровый кусок кода и радуется 8D</div></div><br>тут даже и не кусок...]]></description>
        <author>dark0ut</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92168</guid>
        <pubDate>Fri, 21 Mar 2003 15:30:18 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92168</link>
        <description><![CDATA[wormball: 2albom<br><br>работает она или нет, надо спрашивать у паскаля. ты бы написал, в чём заключается алгоритм и в чём его отличие от перебора, а то прислал здоровый кусок кода и радуется 8D]]></description>
        <author>wormball</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92167</guid>
        <pubDate>Thu, 20 Mar 2003 19:42:27 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92167</link>
        <description><![CDATA[albom: Что-то в голову пришло, написал такую программу. Интересно, она работает?<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">uses crt;</div><div class="code_line">var n,m:byte;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sl:array[1..100]of string[6];</div><div class="code_line">&nbsp;&nbsp; &nbsp;sl2:array[1..100]of string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sh,sh2:array[1..100]of word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;res,res2:string;</div><div class="code_line">&nbsp;&nbsp; &nbsp;i:word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;c:char;</div><div class="code_line">&nbsp;&nbsp; &nbsp;k:set of char;</div><div class="code_line">&nbsp;&nbsp; &nbsp;nk:word;</div><div class="code_line">&nbsp;&nbsp; &nbsp;minn,min,sht:word;</div><div class="code_line">function nod(a,b:longint):longint;</div><div class="code_line">&nbsp;var p1,p2,p3:longint;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;if a&#62;b then</div><div class="code_line">&nbsp;&nbsp;begin p1:=a;p2:=b end</div><div class="code_line">&nbsp;&nbsp; else</div><div class="code_line">&nbsp;&nbsp;begin p1:=b;p2:=a end;</div><div class="code_line">&nbsp;while p2&#60;&#62;0 do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;p3:=p1 mod p2;</div><div class="code_line">&nbsp;&nbsp;p1:=p2;p2:=p3;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;nod:=p1;</div><div class="code_line">&nbsp;end;</div><div class="code_line">function nok(a,b:longint):longint;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;nok:=a*b div nod(a,b);</div><div class="code_line">&nbsp;end;</div><div class="code_line">function get(const s:string):word;</div><div class="code_line">&nbsp;var a,z,r:word;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;r:=0;</div><div class="code_line">&nbsp;for a:=1 to m do</div><div class="code_line">&nbsp;&nbsp;for z:=1 to length(s)-length(sl[a])+1 do</div><div class="code_line">&nbsp;&nbsp; begin</div><div class="code_line">&nbsp;&nbsp; if copy(s,z,length(sl[a]))=sl[a] then</div><div class="code_line">&nbsp;&nbsp; &nbsp;inc(r,sh[a]);</div><div class="code_line">&nbsp;&nbsp; end;</div><div class="code_line">&nbsp;get:=r;</div><div class="code_line">&nbsp;end;</div><div class="code_line">procedure buildres(num:byte);</div><div class="code_line">&nbsp;var m:byte;</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;res:=&#39;&#39;;</div><div class="code_line">&nbsp;m:=1;</div><div class="code_line">&nbsp;while length(res)&#60;n do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;res:=res+sl2[num][m];</div><div class="code_line">&nbsp;&nbsp;m:=1+(m mod length(sl2[num]));</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;end;</div><div class="code_line">begin</div><div class="code_line">clrscr;</div><div class="code_line">fillchar(sl,sizeof(sl),0);</div><div class="code_line">writeln(&#39;‚ўҐ¤ЁвҐ ¤«Ё­­г § Ў®а &#39;);</div><div class="code_line">readln(n);</div><div class="code_line">writeln(&#39;‚ўҐ¤ЁвҐ зЁб«® б«®ў&#39;);</div><div class="code_line">readln(m);</div><div class="code_line">writeln(&#39;‚ўҐ¤ЁвҐ б«®ў  Ё ива дл&#39;);</div><div class="code_line">k:=[];</div><div class="code_line">for i:=1 to m do</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;read(c);</div><div class="code_line">&nbsp;while c&#60;&#62;&#39; &#39; do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;sl[i]:=sl[i]+upcase(c);</div><div class="code_line">&nbsp;&nbsp;read(c);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;readln(sh[i]);</div><div class="code_line">&nbsp;if length(sl[i])=1 then include(k,sl[i][1]);</div><div class="code_line">&nbsp;end;</div><div class="code_line">if not(&#39;I&#39; in k) then begin inc(m);sl[m]:=&#39;I&#39;;sh[m]:=0;end;</div><div class="code_line">if not(&#39;N&#39; in k) then begin inc(m);sl[m]:=&#39;N&#39;;sh[m]:=0;end;</div><div class="code_line">if not(&#39;W&#39; in k) then begin inc(m);sl[m]:=&#39;W&#39;;sh[m]:=0;end;</div><div class="code_line">nk:=nok(length(sl[1]),length(sl[2]));</div><div class="code_line">for i:=3 to m do</div><div class="code_line">&nbsp;nk:=nok(length(sl[i]),nk);</div><div class="code_line">for i:=1 to m do</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;sl2[i]:=&#39;&#39;;</div><div class="code_line">&nbsp;while length(sl2[i])&#60;nk do</div><div class="code_line">&nbsp;&nbsp;sl2[i]:=sl2[i]+sl[i];</div><div class="code_line">&nbsp;sh2[i]:=get(sl2[i]);</div><div class="code_line">&nbsp;end;</div><div class="code_line">minn:=1;buildres(1);min:=get(res);</div><div class="code_line">for i:=2 to m do</div><div class="code_line">&nbsp;begin</div><div class="code_line">&nbsp;buildres(i);</div><div class="code_line">&nbsp;sht:=get(res);</div><div class="code_line">&nbsp;if sht&#60;min then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp;minn:=i;</div><div class="code_line">&nbsp;&nbsp;min:=sht;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;end;</div><div class="code_line">buildres(minn);</div><div class="code_line">res2:=res+res;</div><div class="code_line">min:=get(copy(res2,1,n));sht:=1;</div><div class="code_line">for i:=2 to length(res2)-n+1 do</div><div class="code_line">&nbsp;if get(copy(res2,i,n))&#60;min then</div><div class="code_line">&nbsp;&nbsp;begin sht:=i;min:=get(copy(res2,i,n))end;</div><div class="code_line">&nbsp;</div><div class="code_line">writeln(&#39;ЊЁ­Ё¬ «м­л© ива д: &#39;,get(copy(res2,sht,n)));</div><div class="code_line">writeln(&#39;ЏаЁ¬Ґа: &#39;,copy(res2,sht,n));</div><div class="code_line">readkey;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92166</guid>
        <pubDate>Thu, 20 Mar 2003 19:23:26 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92166</link>
        <description><![CDATA[Cubloid: После полного перебора самое простое решение:<br>инициализируем одной буквой весь забор, считаем полную стоимость, принимаем ее за минимальную.<br>Ставим указатель на последнюю доску и входим в цикл.<br>1) Проверяем последня ли доска, если последняя, то сравнение штрафов и в случае успеха сохранение нового рекорда.<br>2) Текущая цена больше минимальной? Да, то пункт (4)<br>3) Доставляем доску после указателя, если забор не кончился, добавляем цену с учетом штрафов порожденных ей и перемещаем &nbsp;указатель. В случае добавления прыгаем в пункт (2)<br>4) Меняем доску под указаетлем если можем, сначала отнимаем штрафы порожденные предыдущей и ставим новую заместо нее и штрафы опять прибавляем. В случае смены прыгаем в пункт (2)<br>5) Убираем доску под указаетлем, снимаем штрафы, перемещаем указатель к началу на одну позицию. Если убрали первую доску в заборе, то конец, иначе прыгаем в пункт (4)<br><br>Задача похожа на задачу с коробкой, в которую надо положить предметы разного объема и веса, при этом добиться максимального веса при условии, что все предметы не помещаются в объем коробки.<br><br>Более элегантного решения не знаю.]]></description>
        <author>Cubloid</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92165</guid>
        <pubDate>Tue, 18 Mar 2003 21:22:35 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92165</link>
        <description><![CDATA[esperanto: насколько я помню задача динамического програмирования]]></description>
        <author>esperanto</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92164</guid>
        <pubDate>Sun, 16 Mar 2003 19:13:35 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92164</link>
        <description><![CDATA[albom: Найти наименьшее общее кратное длинн слов, расширить все слова путем их повторения, посчитать штрафы новых слов, и взять из слова, с наименьшим штрафом, нужное кол-во букв? Больше ничего не придумал.<br>Блин, ну я и тупой.]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92163</guid>
        <pubDate>Sun, 16 Mar 2003 06:40:00 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92163</link>
        <description><![CDATA[Testudo: Не совсем! Более дорогое слово может состоять из нескольких &quot;самых дешевых&quot;.<br>Алгоритм решения очень прост, поэтому подсказывать не буду: думайте сами. ;D]]></description>
        <author>Testudo</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92162</guid>
        <pubDate>Sun, 16 Mar 2003 04:03:21 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92162</link>
        <description><![CDATA[kardinal: &nbsp;Первое, что заметил, это неправильная постановка задачи.<br> &nbsp;Необходимо указать количества досок с каждой буквой. А то ответ напрашивается сам собой - взять буквы из слова за которое дается наименьший штраф!!!]]></description>
        <author>kardinal</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92161</guid>
        <pubDate>Sat, 15 Mar 2003 19:35:47 +0000</pubDate>
        <title>Текст на заборе.</title>
        <link>https://forum.sources.ru/index.php?showtopic=9492&amp;view=findpost&amp;p=92161</link>
        <description><![CDATA[albom: Что-то никак не пойму, как это решается? Поэтому приведу текст задачи полностью.<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Мэр города Речуйска распорядился штрафовать за употребление нежелательных слов и обнародовал список этих слов с размером штрафа за каждое. Все эти слова состоят из букв &quot;I&quot;, &quot;N&quot;, &quot;W&quot;. <br>
<br>
Некто строит незамкнутый забор длиной N досок. Имеются доски, на каждой из которых написана одна из букв &quot;I&quot;, &quot;N&quot; или &quot;W&quot;. Получившийся забор будет содержать надпись из вышеназванных букв. За каждое нежелательное слово, образуемое какими-либо последовательно стоящими буквами (при прочтении слева направо), придется заплатить штраф, причем столько раз, сколько раз оно встречается на заборе. <br>
<br>
Например, если запрещенными словами являются IN - штраф 1 рубль и WIWI - штраф 100 рублей, то за построение забора WIWIWINI будет назначен штраф 201 рубль. <br>
<br>
Требуется написать программу определения такой последовательности досок в заборе, для которой штраф минимален. <br>
<br>
Ограничения<br>
Штрафы выражаются в рублях Речуйска и представляются целыми числами от 1 до 100. <br>
Количество запрещенных слов &lt;= 50. <br>
Длины запрещенных слов &lt;= 6 символов. <br>
<br>
Входные данные<br>
Первая строка файла входных данных INPUT.TXT содержит длину забора N, вторая - количество слов в списке мэра M. В каждой из последующих M строк записано нежелательное слово и через пробел - соответствующий штраф. Все слова попарно различны, состоят только из больших букв латинского алфавита &quot;I&quot;, &quot;N&quot; или &quot;W&quot;. <br>
<br>
Входные данные корректны. <br>
<br>
Выходные данные<br>
Результат работы программы выводится в файл OUTPUT.TXT. Первая строка выходного файла должна содержать значение минимального штрафа, а вторая - последовательность из N букв, задающую один из возможных способов построения забора с минимальным штрафом.</div></div> Пример:<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
[Входные данные]<br>
8 <br>
8<br>
W 10<br>
I 10<br>
N 30<br>
WI 1<br>
WW 10<br>
II 11<br>
WIW 2<br>
IWI 3<br>
<br>
<br>
[Результат]<br>
98<br>
IWIWIWIW<br>
</div></div>Честно, кроме полного перебора ничего не придумал :(<br>
]]></description>
        <author>albom</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	