<?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[Suche algorithmus]]></title><description><![CDATA[<p>Hi ich suche ein algorithmus für folgende permutationen:<br />
(latex funktioniert hier leider net)<br />
(1,3)=x_1*x_2*x_3<br />
(2,3)=x_1*x_2 +x_1*x_3 + x_2*x_3<br />
(3,3)=x_1+x_2+x_3</p>
<p>(1,4)=x_1*x_2*x_3*x_4<br />
(2,4)=x_1*x_2*x_3 + x_1*x_2*x_4 + x_1*x_3*x_4 + x_2*x_3*x_4<br />
(3,4)=x_1*x_2 + x_1*x_3 + x_2*x_3 + x_1*x_4 + x_2*x_4 + x_3*x_4<br />
(4,4)=x_1 + x_2 + x_3 +x_4</p>
<p>Dabei ist die Anzahl der Summanden (binomial) j über i (endbinom) mit (i,j)=...</p>
<p>x_k ist eine double var.</p>
<p>Leider habe ich nur ansatzweise eine idee.<br />
Gruß und dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216717/suche-algorithmus</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 01:28:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216717.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Jun 2008 13:03:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Suche algorithmus on Fri, 27 Jun 2008 13:03:54 GMT]]></title><description><![CDATA[<p>Hi ich suche ein algorithmus für folgende permutationen:<br />
(latex funktioniert hier leider net)<br />
(1,3)=x_1*x_2*x_3<br />
(2,3)=x_1*x_2 +x_1*x_3 + x_2*x_3<br />
(3,3)=x_1+x_2+x_3</p>
<p>(1,4)=x_1*x_2*x_3*x_4<br />
(2,4)=x_1*x_2*x_3 + x_1*x_2*x_4 + x_1*x_3*x_4 + x_2*x_3*x_4<br />
(3,4)=x_1*x_2 + x_1*x_3 + x_2*x_3 + x_1*x_4 + x_2*x_4 + x_3*x_4<br />
(4,4)=x_1 + x_2 + x_3 +x_4</p>
<p>Dabei ist die Anzahl der Summanden (binomial) j über i (endbinom) mit (i,j)=...</p>
<p>x_k ist eine double var.</p>
<p>Leider habe ich nur ansatzweise eine idee.<br />
Gruß und dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536993</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Suche algorithmus on Fri, 27 Jun 2008 13:42:51 GMT]]></title><description><![CDATA[<p>Vielleicht passt folgender rekursiver Algorithmus:</p>
<p>(n,n) = Summe x_i<br />
(1,n) = Produkt x_i<br />
(k,n) = (k-1,n-1) + x_n * (k,n-1) ; für 1 &lt; k &lt; n</p>
<p>das sollte recht einfach zu programmieren sein (nutze accumulate und multiplies&lt;double&gt;). Falls Du Probleme hast, frag' nochmal nach.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537020</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 27 Jun 2008 13:42:51 GMT</pubDate></item><item><title><![CDATA[Reply to Suche algorithmus on Fri, 27 Jun 2008 14:19:22 GMT]]></title><description><![CDATA[<p>Jo nette idee,<br />
für die i=1,..,3,j=3 klappts,... (aufm pappier),<br />
ich versuche es mal umzusetzen,..<br />
ich melde mich nachher nochmal,<br />
thx <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537032</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 27 Jun 2008 14:19:22 GMT</pubDate></item><item><title><![CDATA[Reply to Suche algorithmus on Fri, 27 Jun 2008 14:54:18 GMT]]></title><description><![CDATA[<p>Hi hier die ausgabe (symbolic):</p>
<blockquote>
<p>(x1*x2*x3)<br />
((x1*x2) + x3*(x1 + x2))<br />
(x1 + x2 + x3)<br />
(x1*x2*x3<em>x4)<br />
((x1*x2*x3) + x4</em>((x1*x2) + x3*(x1 + x2)))<br />
(((x1*x2) + x3*(x1 + x2)) + x4*(x1 + x2 + x3))<br />
(x1 + x2 + x3 + x4)<br />
Drücken Sie eine beliebige Taste . . .</p>
</blockquote>
<p>Und hier der Code:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;
string test(int i, int j, string *test_array)
{
string ret=&quot;(&quot;;

if(i==j){
         for(int k=0;k&lt;i;k++)
         {
          if(k==0){ret+=test_array[k];}
          else{ret+=&quot; + &quot;;ret+=test_array[k];};
         };
          ret+=&quot;)&quot;;return ret;
}

if(i==1){
         for(int k=0;k&lt;j;k++)
         {
          if(k==0){ret+=test_array[k];}
          else{ret+=&quot;*&quot;;ret+=test_array[k];};
         };
         ret+=&quot;)&quot;;return ret;
}

//(k,n)=(k-1,n-1)+x_n*(k,n-1)

ret+=test(i-1,j-1,test_array);
ret+=&quot; + &quot;;
ret+= test_array[j-1];
ret+=&quot;*&quot;;
ret+=test(i,j-1,test_array);
ret+=&quot;)&quot;;
return ret;
};

int main(int argc, char *argv[])
{
    string *test_array;
    test_array= new string[4];
    test_array[0]=&quot;x1&quot;;
    test_array[1]=&quot;x2&quot;;
    test_array[2]=&quot;x3&quot;;
    test_array[3]=&quot;x4&quot;;
    cout&lt;&lt;endl&lt;&lt;test(1,3,test_array);
    cout&lt;&lt;endl&lt;&lt;test(2,3,test_array);
    cout&lt;&lt;endl&lt;&lt;test(3,3,test_array);

    cout&lt;&lt;endl&lt;&lt;test(1,4,test_array);
    cout&lt;&lt;endl&lt;&lt;test(2,4,test_array);
    cout&lt;&lt;endl&lt;&lt;test(3,4,test_array);
    cout&lt;&lt;endl&lt;&lt;test(4,4,test_array);

    cout&lt;&lt;endl;
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>danke vielmals <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537050</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 27 Jun 2008 14:54:18 GMT</pubDate></item><item><title><![CDATA[Reply to Suche algorithmus on Fri, 27 Jun 2008 15:45:57 GMT]]></title><description><![CDATA[<p>Das ist ein interessantes Problem. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Ich schlage folgende Implementierung vor:</p>
<pre><code class="language-cpp">#include &lt;functional&gt; // multiplies
#include &lt;numeric&gt; // accumulate
#include &lt;iterator&gt; // distance

template&lt; typename InItr, typename Sz, typename T &gt;
T algoX( InItr first, InItr last, Sz k, T sum )
{
    assert( 1 &lt;= k );
    assert( k &lt;= std::distance( first, last ) );
    if( k == 1 )
        return std::accumulate( first, last, T(1), std::multiplies&lt; T &gt;() ) + sum;
    if( k == std::distance( first, last ) )
        return std::accumulate( first, last, sum );

    --last;
    return algoX( first, last, k-1, *last * algoX( first, last, k, T(0) ) + sum );
}
</code></pre>
<p>Die Template-Lösung hat den Vorteil, dass man auch 'Strings' addieren kann, genau wie Du es gemacht hast, nur geht der algo natürlich für Zahlen (double) genauso. Mit einem Zahl-String</p>
<pre><code class="language-cpp">#include &lt;cassert&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;boost/operators.hpp&gt;

struct Z : public boost::addable&lt; Z, boost::multipliable&lt; Z &gt; &gt;
{
    Z() : m_x() {}
    explicit Z( int n ) 
        : m_x( n == 0? &quot;&quot;: &quot;1&quot; ) 
    { 
        assert( n &lt;= 1 ); 
    }
    Z( const std::string&amp; x ) : m_x( x ) {}
    Z&amp; operator+=( const Z&amp; b )
    {
        if( m_x.empty() )
            m_x = b.m_x;
        else if( !b.m_x.empty() )
            m_x = &quot;(&quot; + m_x + &quot;+&quot; + b.m_x + &quot;)&quot;;
        return *this;
    }
    Z&amp; operator*=( const Z&amp; b )
    {
        assert( !m_x.empty() );
        assert( !b.m_x.empty() );
        if( m_x == &quot;1&quot; )
            m_x = b.m_x;
        else if( b.m_x != &quot;1&quot; )
            m_x += &quot;*&quot; + b.m_x;
        return *this;
    }

    friend std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const Z&amp; z )
    {
        return out &lt;&lt; z.m_x;
    }
private:
    std::string m_x;
};
</code></pre>
<p>und einem kleinen Programm</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;
    const Z x_i[] = { &quot;x_1&quot;, &quot;x_2&quot;, &quot;x_3&quot;, &quot;x_4&quot; }; // n == 4
    const int n = sizeof(x_i)/sizeof(*x_i);
    for( int i = 1; i &lt;= n; ++i )
        cout &lt;&lt; &quot;(&quot; &lt;&lt; i &lt;&lt; &quot;,&quot; &lt;&lt; n &lt;&lt; &quot;) = &quot; &lt;&lt; algoX( x_i, x_i + n, i, Z() ) &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>erhält man dann diese Ausgabe:</p>
<pre><code>(1,4) = x_1*x_2*x_3*x_4
(2,4) = (x_1*x_2*x_3+x_4*(x_1*x_2+x_3*(x_1+x_2)))
(3,4) = (x_1*x_2+(x_3*(x_1+x_2)+x_4*((x_1+x_2)+x_3)))
(4,4) = (((x_1+x_2)+x_3)+x_4)
</code></pre>
<p>Wenn man Zeile 4 durch</p>
<pre><code class="language-cpp">const double x_i[] = { 1., 2., 3., 4. }; // n == 4
</code></pre>
<p>ersetzt und den Startwert in Zeile 7 mit 0.0 statt Z(), sollte es auch funktionieren.<br />
Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1537077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537077</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 27 Jun 2008 15:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to Suche algorithmus on Sat, 28 Jun 2008 13:33:50 GMT]]></title><description><![CDATA[<p>Cool, danke vielmals <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/1537471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1537471</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Sat, 28 Jun 2008 13:33:50 GMT</pubDate></item></channel></rss>