<?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[next_permutation aber Variationen erzeugen]]></title><description><![CDATA[<p>Frage:<br />
Wie erstelle ich mit C++ am besten alle Variationen einer Menge und einer bestimmten Länge.</p>
<p>Bsp:<br />
[a, b, c, d] &lt;- Menge</p>
<p>ab, ac, ad, ba, bc, bd, ca, cb, ...</p>
<p>Ich will alle möglichen Kombinationen mit jeweils zwei Buchstaben finden.</p>
<p>Die Funktion next_permutation kann das ja nur, wenn die Menge genauso viele Elemente hat, wie das Ergebnis.</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233870/next_permutation-aber-variationen-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 15:01:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233870.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Feb 2009 12:52:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 12:52:50 GMT]]></title><description><![CDATA[<p>Frage:<br />
Wie erstelle ich mit C++ am besten alle Variationen einer Menge und einer bestimmten Länge.</p>
<p>Bsp:<br />
[a, b, c, d] &lt;- Menge</p>
<p>ab, ac, ad, ba, bc, bd, ca, cb, ...</p>
<p>Ich will alle möglichen Kombinationen mit jeweils zwei Buchstaben finden.</p>
<p>Die Funktion next_permutation kann das ja nur, wenn die Menge genauso viele Elemente hat, wie das Ergebnis.</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661040</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Tue, 10 Feb 2009 12:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 14:10:37 GMT]]></title><description><![CDATA[<p>..aber funktioniert irgendwie! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;

int main()
{
  using namespace std;

  cout &lt;&lt; &quot;init\n&quot;;
  char arr[] = { 'a', 'b', 'c', 'd' };
  bool flag = true;

  char* ptr = arr + sizeof(arr) / sizeof(*arr);

  do{
    if(flag){
      copy(arr, arr+2*sizeof(*arr), ostream_iterator&lt; char &gt;(cout, &quot;&quot;));
      cout &lt;&lt; endl;
    }
    flag = (flag ? false : true);
  }while(next_permutation(arr, ptr));
  cout &lt;&lt; endl;

  cout &lt;&lt; &quot;READY.\n&quot;;
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1661134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661134</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Tue, 10 Feb 2009 14:10:37 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 15:02:23 GMT]]></title><description><![CDATA[<p>arr+2*sizeof(*arr)</p>
<p>erklärung dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661173</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Feb 2009 15:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 15:07:40 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>arr+2*sizeof(*arr)</p>
<p>erklärung dafür?</p>
</blockquote>
<p>Da geht er genau zwei Objekte weiter. Blödsinn. Nein, tut er nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661175</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 10 Feb 2009 15:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 15:42:23 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>arr+2*sizeof(*arr)</p>
<p>erklärung dafür?</p>
</blockquote>
<p>Da geht er genau zwei Objekte weiter. Blödsinn. Nein, tut er nicht.</p>
</blockquote>
<p>doch tut er <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="😉"
    /><br />
aber es ist n bisschen doof, weils für int plötzlich nicht mehr geht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1661201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661201</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 10 Feb 2009 15:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 16:03:01 GMT]]></title><description><![CDATA[<p>nja, sollte ein Zeiger auf &quot;zwei Elemente weiter&quot; sein.. ja, is etwas schraeg...</p>
<p>Aber ich weiss auch nicht ob die Sache mit dem bool im alg. so toll is. War nur'n Vorschlag, den ich aus einem Codefetzen den ich irgendwo hatte, zusammengeschnitzt hab und der zufaellig funktionierte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661209</guid><dc:creator><![CDATA[Fabeltier]]></dc:creator><pubDate>Tue, 10 Feb 2009 16:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 16:06:10 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>arr+2*sizeof(*arr)</p>
<p>erklärung dafür?</p>
</blockquote>
<p>Da geht er genau zwei Objekte weiter. Blödsinn. Nein, tut er nicht.</p>
</blockquote>
<p>doch tut er <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="😉"
    /><br />
aber es ist n bisschen doof, weils für int plötzlich nicht mehr geht <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>
</blockquote>
<p>[Korinthenkacker-Mode]<br />
Ne, tut es nicht. Zwei char-Objekte, ja, aber nicht zwei (beliebige) Objekte.<br />
[/Korinthenkacker-Mode]</p>
<p>Fabeltier schrieb:</p>
<blockquote>
<p>nja, sollte ein Zeiger auf &quot;zwei Elemente weiter&quot; sein.. ja, is etwas schraeg...</p>
</blockquote>
<p>Ohne das <code>sizeof(*arr)</code> wärs besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661216</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 10 Feb 2009 16:06:10 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Tue, 10 Feb 2009 18:49:17 GMT]]></title><description><![CDATA[<p>Hmm...</p>
<p>Vielen Dank erstma.</p>
<p>Ich weis ihr sollt nicht meine Arbeit machen, aber könnte das jemand vielleicht nochmal für einen vector&lt;char&gt; posten.</p>
<p>Lerne jetzt gerade mit Iteratoren zu arbeiten und hab next_permutation immer mit (v.begin(), v.end()) aufgerufen.</p>
<p>Mit den sizeof's kann ich mir nix darunter vorstellen.</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661331</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Tue, 10 Feb 2009 18:49:17 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 01:12:34 GMT]]></title><description><![CDATA[<p>Die <code>sizeof</code> s sind wie gesagt unnötig.</p>
<p>Ein</p>
<pre><code class="language-cpp">Array + 2
</code></pre>
<p>ist semantisch äquivalent zu</p>
<pre><code class="language-cpp">Container.begin() + 2
</code></pre>
<p>(Random-Access-Iterator vorausgesetzt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661469</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 11 Feb 2009 01:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 13:45:51 GMT]]></title><description><![CDATA[<p>Edit: OK funktioniert einwandfrei, aber ich hab immer noch nicht verstanden wie.</p>
<p>Was macht das Copy und warum braucht man flag?</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661628</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Wed, 11 Feb 2009 13:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 13:51:14 GMT]]></title><description><![CDATA[<p>Mit <code>flag</code> will er wohl nur jeden zweiten Durchgang der Schleife kopieren. Statt</p>
<pre><code class="language-cpp">flag = (flag ? false : true);
</code></pre>
<p>wäre</p>
<pre><code class="language-cpp">flag = !flag;
</code></pre>
<p>allerdings ein wenig einfacher...</p>
<p>Und zu <code>std::copy()</code> findest du auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> Informationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661777</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 11 Feb 2009 13:51:14 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 15:11:11 GMT]]></title><description><![CDATA[<p>Hmm ok habs jetzt vestanden. Die Lösung funktioniert aber nur wenn man genau 2 weniger Elemente als ingesamt vorhanden kombinieren will.</p>
<p>Deshalb nochmal meine Lösung für jede Art von variation:</p>
<pre><code>unsigned long factorial(unsigned n){ //Fakultät
	unsigned long value = 1;
	for(unsigned i = n; i &gt; 0; i--)
		value = value * i;

	return value;
}

template&lt;class RandomAccessIterator, class OutputIterator&gt;
bool next_variation(RandomAccessIterator first, RandomAccessIterator last, OutputIterator output, unsigned n, unsigned k){
	unsigned long fact = factorial(n-k);

	for(unsigned i = 0; i &lt; fact; i++)
		if(!std::next_permutation(first, last))
			return false;		

	copy(first, first+k, output);
	return true;	
}
</code></pre>
<p>n: Die Anzahl aller Elemente<br />
k: Die Anzahl Elemente, die bei einem Durchgang kombiniert werden</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661859</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Wed, 11 Feb 2009 15:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 16:22:41 GMT]]></title><description><![CDATA[<p>sieht ja böse aus...<br />
uU liegt es daran dass next_permutation hier einfach die falsche wahl ist...</p>
<p>und btw:<br />
n == distance(first, last)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661924</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 11 Feb 2009 16:22:41 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 17:46:54 GMT]]></title><description><![CDATA[<p>Jetzt musst du aber auch sagen was böse ist und wie man es besser macht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1661978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1661978</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Wed, 11 Feb 2009 17:46:54 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 18:34:38 GMT]]></title><description><![CDATA[<p>AceKiller73 schrieb:</p>
<blockquote>
<p>Jetzt musst du aber auch sagen was böse ist und wie man es besser macht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Ist es denn garantiert dass dein Code funktioniert? Darf die STL nicht permutation in beliebiger Reihenfolge erstellen? Mal davon abgesehen dass enorm viele sinnlose Permutationen erstellt werden...</p>
<p>ich wuerde es einfach haendisch machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1662013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1662013</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 11 Feb 2009 18:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to next_permutation aber Variationen erzeugen on Wed, 11 Feb 2009 18:41:55 GMT]]></title><description><![CDATA[<p>Also next_permutation erzeugt keine zufälligen Permutationen, sondern die &quot;lexicographically next greater permutation&quot;.</p>
<p>Ich wollte es erst auch händisch machen wusste aber nicht wie.</p>
<p>Wie willst du das denn machen? Nur rein theoretisch.</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1662020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1662020</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Wed, 11 Feb 2009 18:41:55 GMT</pubDate></item></channel></rss>