<?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[8 Damen Problem Algorithmus]]></title><description><![CDATA[<p>Hallo,</p>
<p>erkennt jemand hier einen Fehler. Ich finde ihn naemlich nicht. Ich pruefe ob die Damen waagrecht, senkrecht oder diagonal geschmissen werden kann.</p>
<pre><code>bool Chess::detectConflicts(char arr[8][2])
{
	//waagrecht
	for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{
             if((arr[i][1] == arr[j][1]) &amp;&amp; (i!=j))
			 { 
				 return false;
			 }
		}
    }

	//senkrecht
    for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{
             if((arr[i][0] == arr[j][0]) &amp;&amp; (i!=j))
			 { 
				 return false;
			 }
		}
    }

	//diagonal
    int steigung_x = 0;
	int steigung_y = 0;
	int steigung = 0;

    for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{  
			if(i!=j)
			{
				steigung_y = arr[i][0] - arr[j][0];
				steigung_x = arr[i][1] - arr[j][1];
				if(steigung_x == 0 ) continue;
				steigung = steigung_y / steigung_x; 
				if(steigung == 1 || steigung == -1)
				{ 
					return false;
				}
			}
		}
    }

	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/324812/8-damen-problem-algorithmus</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 18:10:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324812.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Apr 2014 08:18:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 08:18:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erkennt jemand hier einen Fehler. Ich finde ihn naemlich nicht. Ich pruefe ob die Damen waagrecht, senkrecht oder diagonal geschmissen werden kann.</p>
<pre><code>bool Chess::detectConflicts(char arr[8][2])
{
	//waagrecht
	for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{
             if((arr[i][1] == arr[j][1]) &amp;&amp; (i!=j))
			 { 
				 return false;
			 }
		}
    }

	//senkrecht
    for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{
             if((arr[i][0] == arr[j][0]) &amp;&amp; (i!=j))
			 { 
				 return false;
			 }
		}
    }

	//diagonal
    int steigung_x = 0;
	int steigung_y = 0;
	int steigung = 0;

    for(int i = 0 ;i &lt; 8 ;i++)
	{
		for(int j = 0 ; j &lt; 8 ;j++)
		{  
			if(i!=j)
			{
				steigung_y = arr[i][0] - arr[j][0];
				steigung_x = arr[i][1] - arr[j][1];
				if(steigung_x == 0 ) continue;
				steigung = steigung_y / steigung_x; 
				if(steigung == 1 || steigung == -1)
				{ 
					return false;
				}
			}
		}
    }

	return true;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2392496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392496</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Thu, 03 Apr 2014 08:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 08:30:57 GMT]]></title><description><![CDATA[<p>hallo.</p>
<p>ich hatte recht: backtracking.</p>
<p>blurry333 schrieb:</p>
<blockquote>
<p>geschmissen</p>
</blockquote>
<p>du meinst geschlagen?</p>
<p>wenn du schon einen namespace Chess hast, dann mach dir auch eine klasse, die ein schach-spielbrett repräsentiert. dann merkst du auch, dass ein schachbrett nicht 8x2 felder gross ist.</p>
<p>danach ist das ganze relativ simpel:<br />
-mit backtracking (ruhig echt rekursiv) damen auf den nächsten files (spalten) einfügen<br />
-prüfen ob die neue dame eine andere dame schlagen kann<br />
-wenn nicht, dann eine ebene tiefer gehen (sprich, eine neue dame auf einem neuen file)<br />
-wenn ja, dann soweit zurückgehen mit den ebenen, bis du weiter probieren kannst (die ebenen beim backtracking merken sich natürlich den zustand. wenn auf einem file alle felder ausprobiert wurden, muss man eben noch weiter zurück gehen)</p>
<p>gruss.</p>
<p>ps.: ist das der algorithmus, den man dich am vorstellungsgespräch hat implementieren lassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392499</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 03 Apr 2014 08:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 08:48:04 GMT]]></title><description><![CDATA[<p>Zeile 41 ist krank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392508</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 03 Apr 2014 08:48:04 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 10:04:40 GMT]]></title><description><![CDATA[<p>Wie ist meine Implementierung so?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;map&gt;
#include &lt;cassert&gt;

int main()
{
	bool diagonal_dsc[15]{};
	bool diagonal_asc[15]{};
	bool row[8]{};
	bool col[8]{};

	auto set_occupied = [&amp;]( std::size_t x, std::size_t y, bool b )
	{
		diagonal_dsc[x + y] = b;
		diagonal_asc[x + 7 - y] = b;
		row[y] = col[x] = b;
	};

	std::map&lt;std::size_t, std::size_t&gt; queens;

	for (std::size_t x = 0; x != 8 ; ++x)
		for (;;)
		{
			std::size_t y = queens[x];
			if( !diagonal_dsc[x + y]
			 &amp;&amp; !diagonal_asc[x + 7 - y]
			 &amp;&amp; !row[y] &amp;&amp; !col[x] )
			{
				set_occupied(x, y, true);
				break;
			}

			while( ++queens[x] == 8 )
			{
				queens[x] = 0;
				assert( x &amp;&amp; &quot;No solution found - impossible&quot; );
				--x;
				set_occupied(x, queens[x], false);
			}
		}

	for( auto pos : queens )
		std::cout &lt;&lt; pos.first &lt;&lt; ' ' &lt;&lt; pos.second &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2392523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392523</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Apr 2014 10:04:40 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 09:40:30 GMT]]></title><description><![CDATA[<p>zeile 41 ist zwar krank aber ich deck das vorher schon ab weil es dann waagrecht oder senkrecht waere. Es muss ein anderer Fehler sein !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392524</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Thu, 03 Apr 2014 09:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 09:41:58 GMT]]></title><description><![CDATA[<p>ist die lambda capture so korrekt? kann ich mir kaum vorstellen, dass du lokale kopien verändern willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392526</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 03 Apr 2014 09:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 09:44:08 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>Es muss ein anderer Fehler sein !!</p>
</blockquote>
<p>Stichwort: Ganzzahldivision.</p>
<p>Es reicht übrigens, wenn du j bei i+1 anfangen lässt. Dann machst du nicht mehr jeden Vergleich zweimal und kannst dir die Abfragen auf Gleichheit sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392527</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 03 Apr 2014 09:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 09:53:37 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<pre><code class="language-cpp">assert( x-- &amp;&amp; &quot;No solution found - impossible&quot; );
</code></pre>
</blockquote>
<p>Blöde Idee. das <code>x--</code> willst du sicherlich immer ausführen, auch dann wenn assertions deaktiviert wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392531</guid><dc:creator><![CDATA[kkaw]]></dc:creator><pubDate>Thu, 03 Apr 2014 09:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 10:05:16 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>ist die lambda capture so korrekt?</p>
</blockquote>
<p><s>Der Zeiger wird kopiert.</s><br />
Komisch! Gerade funktionierte es bei mir, darauf verwette ich einen Daumen. Aber richtig, das muss ein <code>&amp;</code> sein.</p>
<p>kkaw schrieb:</p>
<blockquote>
<p>Blöde Idee.</p>
</blockquote>
<p>Ja, stimmt. Korrigiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392532</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Apr 2014 10:05:16 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 10:13:39 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>ist die lambda capture so korrekt?</p>
</blockquote>
<p>Der Zeiger wird kopiert.</p>
</blockquote>
<p><s>ah, hier zerfallen die arrays auch zu zeigern? das wusste ich nicht. danke, wieder was gelernt.</s></p>
<p>edit: ja, ich hab das edit gelesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392533</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 03 Apr 2014 10:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 10:05:32 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>asfdlol schrieb:</p>
<blockquote>
<p>ist die lambda capture so korrekt?</p>
</blockquote>
<p>Der Zeiger wird kopiert.</p>
</blockquote>
<p>ah, hier zerfallen die arrays auch zu zeigern? das wusste ich nicht. danke, wieder was gelernt.</p>
</blockquote>
<p>Nein, ist falsch, siehe Edit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392534</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Apr 2014 10:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 11:09:18 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>blurry333 schrieb:</p>
<blockquote>
<p>Es muss ein anderer Fehler sein !!</p>
</blockquote>
<p>Stichwort: Ganzzahldivision.</p>
<p>Es reicht übrigens, wenn du j bei i+1 anfangen lässt. Dann machst du nicht mehr jeden Vergleich zweimal und kannst dir die Abfragen auf Gleichheit sparen.</p>
</blockquote>
<p>Reicht es schon aus wenn ich steigung zu float mache ?? Hab das versucht aber es geht trotzdem noch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392541</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Thu, 03 Apr 2014 11:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to 8 Damen Problem Algorithmus on Thu, 03 Apr 2014 11:14:31 GMT]]></title><description><![CDATA[<p>Das reicht offensichtlich nicht.</p>
<p>Ich würde da gar keine Division machen. Prüf einfach, ob steigung_x und steigung_y dem Betrag nach gleich sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2392542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2392542</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 03 Apr 2014 11:14:31 GMT</pubDate></item></channel></rss>