eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSumowanieRe: Sumowanie
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " " <f...@g...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Sumowanie
    Date: Mon, 16 Jan 2012 11:36:38 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 82
    Message-ID: <jf1245$eod$1@inews.gazeta.pl>
    References: <jf1049$7pn$1@inews.gazeta.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1326713798 15117 172.20.26.245 (16 Jan 2012 11:36:38 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Mon, 16 Jan 2012 11:36:38 +0000 (UTC)
    X-User: fir
    X-Forwarded-For: 31.62.250.207
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:194719
    [ ukryj nagłówki ]

    M.M. <m...@N...gazeta.pl> napisał(a):

    > Hey
    >
    > Jestem prawie pewny ze jest na to analityczny wzor. Przypomni
    > ktos? Problem: na ile sposobow mozna zsumowac N liczb,
    > tak aby kazdy skladnik byl z przedzialu domknietego <0,M> i
    > suma zeby wynosila M. Oczywiscie chodzi o liczby calkowite.
    >
    > Przykladowe sumy dla N=3 i M=5
    > 5 + 0 + 0 = 5 // poprawna
    > 3 + 2 + 0 = 5 // poprawna
    > 2 + 2 + 1 = 5 // poprawna
    > 2 + 2 + 2 = 6 // niepoprawna
    > 2 + 2 + 0 = 4 // niepoprawna
    > -1 + 6 + 0 = 5 // niepoprawna
    >
    > Dla liczb z przedzialu od 1 do M mozna to zadanie rozwiazac zamieniajac
    > kodowanie binarne na kodowanie unarne. Np. na ile sposobow mozna zsumowac
    > 3 liczby aby uzyskac 10? Kreski to liczby kodowane unarnie, a dwukropki
    > to separatory pomiedzy liczbami:
    > ||:|||||:||| -> 2 + 5 + 3 = 10
    >
    > Teraz widac ze zadanie mozna przedefinowac:
    > Na ile sposobow mozna rozstawic dwukropki pomiedzy kreskami?
    > Mamy (9 nad 2) = 36
    >
    > A jak to rozwiazac jesli zera tez sa dozwolone? Ponizszy programik niby
    > rozwiazuje, ale ma zlozonosc wykladnicza wzgledem (M+1) ^ N :/
    >
    > Pozdrawiam
    > ----------------------------------------------------
    -------------------
    >
    > #include <cstdlib>
    > #include <cstdio>
    >
    > #define MAX (8) // M
    > #define DEPTH (10) // N
    >
    > typedef int ityp;
    > typedef const int cityp;
    > typedef unsigned int utyp;
    > typedef const unsigned int cutyp;
    >
    > static utyp find( cutyp sum=0 , cutyp depth=0 ) {
    > if( depth == DEPTH )
    > return sum == MAX; // if( sum == MAX ) return 1; else return
    0;
    > utyp res = 0;
    > for( ityp i=0 ; i<=MAX ; i++ )
    > res += find( sum+i , depth+1 );
    > return res;
    > }
    >
    > int main( int argc, char *argv[] ) {
    > utyp sum = find();
    > printf("sum = %u\n",sum);
    > return 0;
    > }
    >
    >

    bedzie to raczej po prostu jakis < wzorek ( N , M ) >
    tak ze wydaje mi sie ze program jest tu nie bardzo na
    miejscu
    (ps mozesz mi przypomiec czy slowo static przed nazwa
    funkcji znaczy ze jest ona prywatna dla modulu czy cos
    innego? - nigdy tego nie uzywalem),

    sam nie zajmuje sie raczej tego typu bardziej matematycznym
    programowaniem na codzien (jak rowniez i biznesowym, www-owym
    itd itd) blizsze mi tematy malych gierek video (ew ogolna teoria
    programowania lub ostatnio nawet bardziej tzw temety humanistyczne)
    totez nie bardzo mam sile i chec sie 'przelaczac' na obce mi zagadnienia
    i wyprowadzac wzorka choc wydaje sie raczej b prosty





    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: