<?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[Kombinationen. Permutation streichen?]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich möchte ein programm schreiben, mit welchem ich berechnen kann, mit welcher kombinationen an Münzen und Notenscheinen ich eine gegebene Zahl &quot;darstellen&quot; kann.</p>
<p>Also 5 cent kann ich ja</p>
<p>5x 1 Cent darstellen<br />
2<em>2 Cent + 1 Cent<br />
5</em>1 Cent etc.</p>
<p>Nun habe ich mir mal überlegt, wenn ich da eine schleife bauen würde, dann müsste ich ja pro existierende Münzen / Noten die teiler berechnen (wie ist mir da auch noch ein Rätsel, wohl mit einem Array o.ä.) und vorallem kommen da ja dann gewisse kombinationen 2x vor.</p>
<p>Meine Frage daher,</p>
<p>1. wie kann ich die kombinationen speichern (können ja ganz schön viele werden, bzw. weiss ja nicht wie lange die überhaupt werden können - bei 50 Euro ist das ja kaum mehr überblick bar, wenn man jeden cent zulässt</p>
<p>2. mit welchem verfahren kann ich permutationen streichen?</p>
<p>Habe schon an rekursion gedacht und damit an tiefensuche, aber das macht alles noch viel komplizierter!</p>
<p>Gibt es da einen &quot;einfacheren Weg?</p>
<p>Lg Hugo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199261/kombinationen-permutation-streichen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 12:53:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199261.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2007 14:14:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Fri, 30 Nov 2007 14:14:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich möchte ein programm schreiben, mit welchem ich berechnen kann, mit welcher kombinationen an Münzen und Notenscheinen ich eine gegebene Zahl &quot;darstellen&quot; kann.</p>
<p>Also 5 cent kann ich ja</p>
<p>5x 1 Cent darstellen<br />
2<em>2 Cent + 1 Cent<br />
5</em>1 Cent etc.</p>
<p>Nun habe ich mir mal überlegt, wenn ich da eine schleife bauen würde, dann müsste ich ja pro existierende Münzen / Noten die teiler berechnen (wie ist mir da auch noch ein Rätsel, wohl mit einem Array o.ä.) und vorallem kommen da ja dann gewisse kombinationen 2x vor.</p>
<p>Meine Frage daher,</p>
<p>1. wie kann ich die kombinationen speichern (können ja ganz schön viele werden, bzw. weiss ja nicht wie lange die überhaupt werden können - bei 50 Euro ist das ja kaum mehr überblick bar, wenn man jeden cent zulässt</p>
<p>2. mit welchem verfahren kann ich permutationen streichen?</p>
<p>Habe schon an rekursion gedacht und damit an tiefensuche, aber das macht alles noch viel komplizierter!</p>
<p>Gibt es da einen &quot;einfacheren Weg?</p>
<p>Lg Hugo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412955</guid><dc:creator><![CDATA[Hugo B]]></dc:creator><pubDate>Fri, 30 Nov 2007 14:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Fri, 30 Nov 2007 14:46:37 GMT]]></title><description><![CDATA[<p>Mit Permutationen hat das nichts zu tun.</p>
<p>Du könntest es folgendermaßen versuchen: Du fängst mit der größten Währungseinheit an (z. B. 50 Euro) und schreibst eine Schleife, die damit anfängt, 0 von dieser Einheit zu nehmen, bis du dabei angekommen bist, die maximale Anzahl dieser Einheit zu nehmen, die in den Betrag reinpasst. Mit dem Betrag, der dann noch übrig ist, rufst du die Funktion rekursiv auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412987</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 30 Nov 2007 14:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 15:29:46 GMT]]></title><description><![CDATA[<p>Ja, hat was...</p>
<p>Das Problem ist einfach, dass eine rekrusion bei 50 euro eine endlos lange laufzeit hat, denn es gibt ja für die kombinationen von 1 cent zu 50 euro hin weiss ich nicht wieviel möglichkeiten.</p>
<p>Zudem ist mir nicht ganz klar, wie diese rekrusion aussehen sollte Michael!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413402</guid><dc:creator><![CDATA[Wulf]]></dc:creator><pubDate>Sat, 01 Dec 2007 15:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 15:46:25 GMT]]></title><description><![CDATA[<p>was du lösen willst, nennt sich Rucksackproblem. <a href="http://de.wikipedia.org/wiki/Rucksackproblem" rel="nofollow">http://de.wikipedia.org/wiki/Rucksackproblem</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413412</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 01 Dec 2007 15:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 16:05:28 GMT]]></title><description><![CDATA[<p>namenlos schrieb:</p>
<blockquote>
<p>was du lösen willst, nennt sich Rucksackproblem. <a href="http://de.wikipedia.org/wiki/Rucksackproblem" rel="nofollow">http://de.wikipedia.org/wiki/Rucksackproblem</a></p>
</blockquote>
<p>Im Rucksackproblem wird doch eine optimale Lösung gesucht, Hugo B/Wulf wollte aber eine Aufzählung aller Möglichkeiten. Soweit, wie ich das Rucksackproblem verstehe, kann man's hierauf nicht anwenden (?).</p>
<p>Wulf schrieb:</p>
<blockquote>
<p>Das Problem ist einfach, dass eine rekrusion bei 50 euro eine endlos lange laufzeit hat, denn es gibt ja für die kombinationen von 1 cent zu 50 euro hin weiss ich nicht wieviel möglichkeiten.</p>
</blockquote>
<p>Wenn es zu viele Lösungen sind, kannst du sie ja auch nicht alle speichern. Willst du die Anzahl der Lösungen haben, die Lösungen auflisten oder musst du wirklich alle speichern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413421</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 01 Dec 2007 16:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 17:23:41 GMT]]></title><description><![CDATA[<p>der algorithmus zum rucksackproblem kann mehrere probleme lösen. eben auch dieses hier. die kapazität des rucksacks ist der wert in cent, den man aufteilen will. die existierenden münzen entsprechen den dingen, die man in den rucksack geben kann. dass man in dem fall genau auf den wert kommen will, ist nur eine variante.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413459</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 01 Dec 2007 17:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 17:54:17 GMT]]></title><description><![CDATA[<p>Wäre dann die Nutzenfunktion die Anzahl der jeweiligen Einheit oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413473</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 01 Dec 2007 17:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 19:24:53 GMT]]></title><description><![CDATA[<p>mit dem algorithmus zum rucksackproblem kann ich alle kombinationen berechnen. der rucksackalgorithmus verwirft nicht optimale lösungen. wenn ich aber den nutzen jedes elements auf 1 setzen (sprich, ich ignoriere den nutzen einfach), sind alle kombinationen optimal, die im gesamten dann genau die größe des rucksackes ergeben. so seh ich das halt.</p>
<p>EDIT: sorry, nicht alle münzen auf 1, sondern auf ihren wert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413526</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 01 Dec 2007 19:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sat, 01 Dec 2007 20:27:19 GMT]]></title><description><![CDATA[<p>Nei, es ginge drum, das ich eine möglichkeit nach der anderen ausgebe und nichts davon speichere, aber es happert wohl eher an der rekursion und dann v.a. im umsetzen in c++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413563</guid><dc:creator><![CDATA[Hugo B]]></dc:creator><pubDate>Sat, 01 Dec 2007 20:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sun, 02 Dec 2007 10:01:13 GMT]]></title><description><![CDATA[<p>der versuch einer lösung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iomanip&gt;

typedef int coins[6];
coins values = { 1, 2, 5, 10, 20, 50 };
int sum(coins&amp; c) {
  int sum = 0;
  for(unsigned int i = 0; i &lt; sizeof(coins) / sizeof(int); ++i) { sum += c[i] * values[i]; }
  return sum;
}
void print(coins&amp; c) {
  for(unsigned int i = 0; i &lt; sizeof(coins) / sizeof(int); ++i) { std::cout &lt;&lt; std::setw(2) &lt;&lt; c[i] &lt;&lt; ' '; }
  std::cout &lt;&lt; &quot;= &quot; &lt;&lt; sum(c) &lt;&lt; std::endl;
  return;
}
void copy(coins&amp; a, coins&amp; b) {
  for(unsigned int i = 0; i &lt; sizeof(coins) / sizeof(int); ++i) { a[i] = b[i]; }
  return;
}

coins transformations[] = {
  /* 2*/ { 2, 0, 0, 0, 0, 0 },
  /* 5*/ { 1, 2, 0, 0, 0, 0 },
  /*10*/ { 0, 0, 2, 0, 0, 0 },
  /*20*/ { 0, 0, 0, 2, 0, 0 },
  /*50*/ { 0, 0, 0, 1, 2, 0 }
};

bool check(coins&amp; c, int n) {
  for(unsigned int i = 0; i &lt; sizeof(coins) / sizeof(int); ++i) {
    if(c[i] &lt; transformations[n][i]) { return false; }
  }
  return true;
}

bool transform(coins&amp; c, int n) {
  if(!check(c, n)) { return false; }
  for(unsigned int i = 0; i &lt; sizeof(coins) / sizeof(int); ++i) { c[i] -= transformations[n][i]; }
  c[n + 1] += 1;
  return true;
}

void combinations(coins&amp; c, int n = 0) {
  while(transform(c, n)) {
    print(c);
    coins tmp;
    copy(tmp, c);
    if(check(c, n + 1)) { combinations(tmp, n + 1); }
  }
  return;
}

int main(void) {
  coins c = { 50, 0, 0, 0, 0 };
  print(c);
  combinations(c);
  return 0;
}
</code></pre>
<p>es ist nur ein ansatz. ich muss zugeben, dass ich nicht nachgeprüft hab, ob wirklich alle möglichen kombinationen enthalten sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413707</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 02 Dec 2007 10:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sun, 02 Dec 2007 11:58:51 GMT]]></title><description><![CDATA[<p>Es sind ja noch eine Ecke mehr Werte, du musst ja alles von 1 Cent bis 50 Euro einbauen, also <code>{ 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000 }</code> . Ich könnte wetten, dass das zu viele Kombinationen ergibt, als dass sich das in einer vernünftigen Zeitspanne ablaufen ließen.. Ich weiß es aber nicht, mal schauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413743</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 02 Dec 2007 11:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to Kombinationen. Permutation streichen? on Sun, 02 Dec 2007 12:18:00 GMT]]></title><description><![CDATA[<p>hm jo. wie gesagt, es ist ein ansatz. die weiteren scheine hinzuzufügen, ist jetzt nicht so schwer. man braucht sie ja nur dazuzuschreiben.</p>
<p>EDIT: wobei das aber eh genau gar nichts bringt, da er schon allein bei der aufgabe, 50000 cent (sprich 500 euro) zu kombinieren, ewig rechnet. das sind auch sicher millionen an möglichkeiten. wenn nit milliarden.<br />
bei 5 euro rechnet er bei mir 37 sekunden lang und hat 6295435 kombinationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413746</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 02 Dec 2007 12:18:00 GMT</pubDate></item></channel></rss>