<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[kleine Aufgabe, Diebe und Beute [HILFE]]]></title><description><![CDATA[<p>hallo erstmal,</p>
<p>sitz hier vor ne Aufgabenstellung, aber schaffe es irgendwie nicht zu lösen, meine Idee war so ne Art BruteForce aber das bekomme ich in dem Fall irgendwie nicht auf die Reihe.</p>
<p>Also die Aufgabe:</p>
<p>2 Diebe stehlen 10 Wertstücke</p>
<pre><code>float b[10] = {333.33, 
                   655.99, 
                   387.50, 
                   1420.10, 
                   4583.17, 
                   7500, 
                   215.12, 
                   3230.17, 
                   599, 
                   3775.11};
</code></pre>
<p>diese Wertstücke sollen Fair auf die 2 Aufgeteilt werden, dabei darf auch ruhig einer von beiden nur 2 oder 3 stücke bekommen, solange am Ende beide auf etwa den gleichen Wert kommen.</p>
<p>WÄr fett wenn mir jemand helfen könnte, danke schonmal im vorraus</p>
<p>FraggeR</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149772/kleine-aufgabe-diebe-und-beute-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 11:20:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149772.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Jun 2006 08:36:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 08:36:22 GMT]]></title><description><![CDATA[<p>hallo erstmal,</p>
<p>sitz hier vor ne Aufgabenstellung, aber schaffe es irgendwie nicht zu lösen, meine Idee war so ne Art BruteForce aber das bekomme ich in dem Fall irgendwie nicht auf die Reihe.</p>
<p>Also die Aufgabe:</p>
<p>2 Diebe stehlen 10 Wertstücke</p>
<pre><code>float b[10] = {333.33, 
                   655.99, 
                   387.50, 
                   1420.10, 
                   4583.17, 
                   7500, 
                   215.12, 
                   3230.17, 
                   599, 
                   3775.11};
</code></pre>
<p>diese Wertstücke sollen Fair auf die 2 Aufgeteilt werden, dabei darf auch ruhig einer von beiden nur 2 oder 3 stücke bekommen, solange am Ende beide auf etwa den gleichen Wert kommen.</p>
<p>WÄr fett wenn mir jemand helfen könnte, danke schonmal im vorraus</p>
<p>FraggeR</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074365</guid><dc:creator><![CDATA[wwlFraggeR]]></dc:creator><pubDate>Fri, 09 Jun 2006 08:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 08:42:23 GMT]]></title><description><![CDATA[<p>Ich glaube, Brute Force ist der beste Weg, wenn du die optimale Lösung benötigst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Für Näherungslösungen kannst du mal nach &quot;Partition Problem&quot; suchen (das beschreibt deine Fragestellung relativ gut, denke ich mal).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074370</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Jun 2006 08:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 08:55:33 GMT]]></title><description><![CDATA[<p>finde leider nix unter partition problem....</p>
<p>kann mir jemand vielleicht bei nem brute force ansatz helfen.. hab in der richtung noch nix gemacht, aber beherrsche so ziemlich alle grundlagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074377</guid><dc:creator><![CDATA[wwlFraggeR]]></dc:creator><pubDate>Fri, 09 Jun 2006 08:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 09:35:25 GMT]]></title><description><![CDATA[<p>Bestimmt nicht der beste Ansatz, aber einer bei dem etwas rauskommt:<br />
Du &quot;gibst&quot; Dieb 1 das erste Teil der Beute und danach Dieb2 solange andere Teile aus der Liste bis er mehr oder gleichviel hat. Dann gibts Du Dieb1 wieder solange etwas, bis er mehr hat als Dieb2. Dann ist wieder Dieb2 dran ...</p>
<p>Am Ende der Liste lässt Du dir das Ergebnis anzeigen</p>
<p>Danach verschiebst Du das erste Element der Liste ans Ende und lässt den Algorythmus erneut ablaufen. Das machst Du solange bis jedes Element mal das Erste war.<br />
(Eigentlich kein Bruteforce, da dann auch jedes Element bei jedem anderem ersten Element einmal das zweite, dritte, vierte, usw. Element der Liste sein müsste. Das gibt aber bei 10 Elementen eine ziemlich lange Liste an möglichen Permutationen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074408</guid><dc:creator><![CDATA[Pumeluk2]]></dc:creator><pubDate>Fri, 09 Jun 2006 09:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 09:55:08 GMT]]></title><description><![CDATA[<p>wwlFraggeR schrieb:</p>
<blockquote>
<p>finde leider nix unter partition problem....</p>
<p>kann mir jemand vielleicht bei nem brute force ansatz helfen.. hab in der richtung noch nix gemacht, aber beherrsche so ziemlich alle grundlagen</p>
</blockquote>
<p>Schaumal unter Rucksack-Problem.<br />
<a href="http://de.wikipedia.org/wiki/Rucksack-Problem" rel="nofollow">http://de.wikipedia.org/wiki/Rucksack-Problem</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074428</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Fri, 09 Jun 2006 09:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 10:32:13 GMT]]></title><description><![CDATA[<p>Wenn die Beute aufgeteilt wird, haben die Stücke immer nur zwei Zustände: entweder bei Dieb1 oder bei Dieb2. Das reduziert das Problem auf ein binäres.<br />
Da es 10 Beutestücke sind, gibt es also 2^10=1024 Möglichkeiten der Verteilung. Wenn man die 10 Bit als Zahl darstellt, bzw. umgekehrt, kann man eine For-Schleife zum Prüfen aller Möglichkeiten verwenden:</p>
<pre><code>nummer  binär 		dieb1                   dieb2
0       0000000000	0                       alles
1       0000000001	[1]                     alles-[1]
2       0000000010	[2]                     alles-[2]
3       0000000011	[1]+[2]                 alles-[1]-[2]
...
682     1010101010	[2]+[4]+[6]+[8]+[10]    [1]+[3]+[5]+[7]+[9]
...
1021    1111111101	alles-[2]               [2]
1022    1111111110	alles-[1]               [1]
1023    1111111111	alles                   0
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1074462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074462</guid><dc:creator><![CDATA[Morris Szyslak]]></dc:creator><pubDate>Fri, 09 Jun 2006 10:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 11:32:00 GMT]]></title><description><![CDATA[<p>siehe auch &quot;Permutation&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074532</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Fri, 09 Jun 2006 11:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 12:25:52 GMT]]></title><description><![CDATA[<p>Pumeluk2 schrieb:</p>
<blockquote>
<p>Bestimmt nicht der beste Ansatz, aber einer bei dem etwas rauskommt:<br />
Du &quot;gibst&quot; Dieb 1 das erste Teil der Beute und danach Dieb2 solange andere Teile aus der Liste bis er mehr oder gleichviel hat. Dann gibts Du Dieb1 wieder solange etwas, bis er mehr hat als Dieb2. Dann ist wieder Dieb2 dran ...</p>
<p>Am Ende der Liste lässt Du dir das Ergebnis anzeigen</p>
</blockquote>
<p>Find ich gar nicht so schlecht. Ich würde nur davor die Liste sortieren und mit dem größten beginnen, dann gibt es imo das beste Ergebniss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074583</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Fri, 09 Jun 2006 12:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 13:02:20 GMT]]></title><description><![CDATA[<p>Es gibt den nützlichen Algorithmus <em>next_permutation</em> in der STL. Den lässt du einfach in einer while-Schleife durchlaufen, teilst dein Array in der Mitte auf, summierst die einzelnen Teilbeträge, subtrahierst die Summen und merkst dir den kleinsten Betrag, der ist dann die Beste Lösung.</p>
<p>Das iss reines Brute-Force, braucht O(n!) iterationen, geht bestimmt auch intelligenter.</p>
<p><a href="http://www.sgi.com/tech/stl/next_permutation.html" rel="nofollow">http://www.sgi.com/tech/stl/next_permutation.html</a></p>
<p>//edit<br />
Huch, ganz so einfach isses nicht weil die Diebe eine beliebige Anzahl an Stücken bekommen können. Da musste noch in einer inneren Schleife das Array an allen möglichen Positionen teilen und dann testen.<br />
Wobei als Optimierung eine Teilung 0-10 und 10-0 ... übersprungen werden kann.</p>
<p>Frage:<br />
Iss dann iss die Komplexität O(n!*n+1) ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074603</guid><dc:creator><![CDATA[__HIRSCH_H__]]></dc:creator><pubDate>Fri, 09 Jun 2006 13:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Fri, 09 Jun 2006 20:49:18 GMT]]></title><description><![CDATA[<p><strong>HIRSCH_H</strong> schrieb:</p>
<blockquote>
<p>Iss dann iss die Komplexität O(n!*n+1) ?</p>
</blockquote>
<p>Sowas gibt's nicht (wirklich). O(n + 1) = O(n), daher ist das obige in jedem Fall O(n!).<br />
Abgesehen davon ist die Komplexitätsklasse soweit ich das sehe &quot;nur&quot; O(2^n).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1074830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1074830</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 09 Jun 2006 20:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Mon, 12 Jun 2006 07:45:01 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p><strong>HIRSCH_H</strong> schrieb:</p>
<blockquote>
<p>Iss dann iss die Komplexität O(n!*n+1) ?</p>
</blockquote>
<p>Sowas gibt's nicht (wirklich). O(n + 1) = O(n), daher ist das obige in jedem Fall O(n!).<br />
Abgesehen davon ist die Komplexitätsklasse soweit ich das sehe &quot;nur&quot; O(2^n).</p>
</blockquote>
<p>Meinte auch O(n!*(n+1)). Die Permutation hat doch die Komplexität n! hinzu kommt die innere Schleife für das Verschieben der Grenzen wobei es n+1 Möglichkeiten gibt. Wie kommst du auf O(2^n)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075991</guid><dc:creator><![CDATA[__HIRSCH_H__]]></dc:creator><pubDate>Mon, 12 Jun 2006 07:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Mon, 12 Jun 2006 08:05:03 GMT]]></title><description><![CDATA[<p>Wenn du das so siehst, dann kannst du das doch weiter aufdröseln: n!*(n+1) = (n+1)! = O(n!).</p>
<p>(und afaik kann man die Fakultät auch durch eine Exponentialfunktion abschätzen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076000</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 12 Jun 2006 08:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Mon, 12 Jun 2006 08:15:47 GMT]]></title><description><![CDATA[<p>(n+1)! liegt in O(n!)? Das glaube ich nicht. Gib mal ne Konstante an, sodaß n! für alle n (n+1)! dominiert. Das geht nämlich nicht, sobald n+1 über Deine Konstante wächst wird (n+1)! größer als Konstante*n!. =&gt; O(n!) != O((n+1)!)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph:<br />
Die Komplexität von was ist &quot;nur&quot; O(2^n)? Die des Problems? Falls ja, würde mich die Begründung dazu interessieren. Du wärst damit ner ganz heißen Sache auf der Spur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076008</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 12 Jun 2006 08:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to kleine Aufgabe, Diebe und Beute [HILFE] on Mon, 12 Jun 2006 11:20:32 GMT]]></title><description><![CDATA[<p>siehe mein Post <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Hier geht's nicht um Permutationen sondern rein um Verteilung. Wie die Teile sortiert sind, interessiert hier nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076166</guid><dc:creator><![CDATA[Morris Szyslak]]></dc:creator><pubDate>Mon, 12 Jun 2006 11:20:32 GMT</pubDate></item></channel></rss>