<?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[Baumdiagramm rekursiv durchlaufen]]></title><description><![CDATA[<p>Hallo,<br />
ich stehen momentan ziemlich auf dem Schlauch. Ich habe eine vector mit Münzen. Diesen soll ich nun darauf testen, ob es möglich ist einen bestimmten Geldwert daraus zu bilden. Rekursiv sollte sich das relativ einfach lösen lassen, ich komme gerade nur nicht drauf, wie ich das am besten angehen soll. Ich habe mir bis jetzt dieses Baumdiagramm überlegt(es sind nicht alle Äste vollständig gezeichnet):<br />
<a href="http://www.youscreen.de/yvmphivsq47.jpg" rel="nofollow">http://www.youscreen.de/yvmphivsq47.jpg</a></p>
<p>Wenn man von einer vector Größe von 5 ausgeht, dann hat man die Wahl zwischen 5 Einträgen, wählt man einen, so hat man nur noch 4 zur Auswahl, wählt man einen weiteren nur noch 3, einen weiteren nur noch 2 und schließlich einen letzen.</p>
<p>Soweit sollte alles stimmen, nur habe ich keine Idee, wie man so etwas rekursiv umsetzt.</p>
<p>Mein Ansatz der Methode:</p>
<pre><code>void process(std::vector&lt;int&gt; &amp;münzen, int curr_pos, std::vector&lt;int&gt; münzen_used) //münzen_used: hier wird gespeichert, welche Münzen ausgewählt worden sind
{
    if (curr_pos &lt; 0 || curr_pos &gt;= münzen.size()) // out of range
		return;

    //hier habe ich Probleme

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/339959/baumdiagramm-rekursiv-durchlaufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 16:56:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339959.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Oct 2016 19:44:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Baumdiagramm rekursiv durchlaufen on Mon, 10 Oct 2016 19:44:00 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich stehen momentan ziemlich auf dem Schlauch. Ich habe eine vector mit Münzen. Diesen soll ich nun darauf testen, ob es möglich ist einen bestimmten Geldwert daraus zu bilden. Rekursiv sollte sich das relativ einfach lösen lassen, ich komme gerade nur nicht drauf, wie ich das am besten angehen soll. Ich habe mir bis jetzt dieses Baumdiagramm überlegt(es sind nicht alle Äste vollständig gezeichnet):<br />
<a href="http://www.youscreen.de/yvmphivsq47.jpg" rel="nofollow">http://www.youscreen.de/yvmphivsq47.jpg</a></p>
<p>Wenn man von einer vector Größe von 5 ausgeht, dann hat man die Wahl zwischen 5 Einträgen, wählt man einen, so hat man nur noch 4 zur Auswahl, wählt man einen weiteren nur noch 3, einen weiteren nur noch 2 und schließlich einen letzen.</p>
<p>Soweit sollte alles stimmen, nur habe ich keine Idee, wie man so etwas rekursiv umsetzt.</p>
<p>Mein Ansatz der Methode:</p>
<pre><code>void process(std::vector&lt;int&gt; &amp;münzen, int curr_pos, std::vector&lt;int&gt; münzen_used) //münzen_used: hier wird gespeichert, welche Münzen ausgewählt worden sind
{
    if (curr_pos &lt; 0 || curr_pos &gt;= münzen.size()) // out of range
		return;

    //hier habe ich Probleme

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2511149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511149</guid><dc:creator><![CDATA[gast2]]></dc:creator><pubDate>Mon, 10 Oct 2016 19:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Baumdiagramm rekursiv durchlaufen on Mon, 10 Oct 2016 20:30:16 GMT]]></title><description><![CDATA[<p>Hausaufgabe?</p>
<p>Ich würde die Signatur anders wählen:</p>
<pre><code>void process(const std::vector&lt;int&gt; &amp;muenzen, int target_value,
             vector&lt;int&gt; &amp;gewaehlt, size_t curr_pos = 0, int current_sum = 0)
</code></pre>
<p>Also insbesondere muss ich doch wissen, welches Ziel ich habe und die Summe der aktuell ausgewählten Münzen kann auch nicht schaden.</p>
<p>Tipp: in process muss du 2x process selbst aufrufen, jeweils mit curr_pos+1, einmal mit und einmal ohne hinzugefügter Münze.</p>
<p>Und jetzt: selber probieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511154</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Mon, 10 Oct 2016 20:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to Baumdiagramm rekursiv durchlaufen on Mon, 10 Oct 2016 20:46:02 GMT]]></title><description><![CDATA[<p>Ich habe hier mal zwei Varianten aus meinen alten Codeschnipseln:</p>
<pre><code>bool erreichbar(int b)
{
	if(b == 0)
		return true;
	if(b &lt; 0)
		return false;

	for(int i = 0; i &lt; m.size(); ++i)
	{
		if(erreichbar(b - m[i]))
		{
			r.push_back(m[i]);
			return true;
		}
	}

	return false;
}

bool erreichbar1(int b, int start = 0)
{
	if(b == 0)
		return true;
	if(b &lt; 0)
		return false;

	for(int i = start; i &lt; m.size(); ++i)
	{
		if(erreichbar1(b - m[i], start + 1))
		{
			r.push_back(m[i]);
			return true;
		}
	}

	return false;
}
</code></pre>
<p>m ist ein - global definierter - Vektor, der die zur Verfügung stehenden Münzen enthält. r ist ein global definierter leerer Vektor, der mit den Münzen befüllt wird, die die gesuchte Summe ergeben.<br />
Beide Varianten werden mit der gesuchten Summe als Parameter aufgerufen.<br />
Die erste Variante verwendet die zur Verfügung stehenden Münzen mehrfach, in m sind also lediglich die verschiedenen Münzgrößen erforderlich.<br />
Die zweite Variante verwendet jede Münze nur einmal.<br />
Seien die Münzen in m zB: 5, 2 und 1, dann findet Variante 1 die Summen 10, 15, 22 usw. Variante 2 findet die Summen 5, 7, 8, 3 ...<br />
Für Variante 2 macht es also Sinn, m zB: mit 5, 5, 5, 2, 2, 1 zu füllen, für den Aufruf von Variante 1 nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511157</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 10 Oct 2016 20:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Baumdiagramm rekursiv durchlaufen on Tue, 11 Oct 2016 14:22:36 GMT]]></title><description><![CDATA[<p>Super danke, das war genau, wonach ich gesucht habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511248</guid><dc:creator><![CDATA[gast2]]></dc:creator><pubDate>Tue, 11 Oct 2016 14:22:36 GMT</pubDate></item></channel></rss>