Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sve moguce kombinacije niza brojeva duzine n

[es] :: Art of Programming :: Sve moguce kombinacije niza brojeva duzine n

[ Pregleda: 6883 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.gradiska.com



+120 Profil

icon Sve moguce kombinacije niza brojeva duzine n21.05.2004. u 10:02 - pre 242 meseci
Cao. Zapeo sam na jednom zadtku sa stringovima ali da bi ga rijesio trebam naci sve moguce kombinacije niza brojeva duzine n.

Npr. n=4
1 2 3 4
Kombinacije su:
1,12,123,1234,13,134,14,2,23,234,24,3,34,4

...
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.dialup.xtra.co.nz



+3 Profil

icon Re: Sve moguce kombinacije niza brojeva duzine n21.05.2004. u 15:54 - pre 242 meseci
Mozes da resis na nekoliko nacina. Npr. mozes rekurzijom tako sto imas neki globalni temporary string a duzinu tog strina prosledjujes rekurzivnoj funkciji kao i polozaj karaktera u pocetnom stringu za koji gledas da li da ga ubacis ili ne uvacis. Prvi put pozoves kombinacije(0,0) (j=0, k =0)
a ta funkcija ce da ti uradi ovo

if (k<n)

{
temp[j]=zadati_string[k];
kombinacije(j+1,k+1); //ubacili smo trenutni karakter u nasu kombinaciju
kombinacije(j,k+1); // nismo ubacili.....
}
else
temp[j]=0;
cout << temp;

Postoji i nerekurzivni nacin. Evo ovo ce da ti pomogne.
Imas string aghw
uzmes broj k koji ces da postavis na nulu. Sada gledas njegova poslednja 4 bita. Kada je neki bit postavljen na 1 onda odstampas odgovarajuci karakter a u suprotnom ne stampas.
Recimo povecas k za 1. Onda ce da ti se odstampa w
povecas ponovo k za 1 i k ce biti 2 a binarno 0010 i odtampaces h
povecas ponovo k za 1 i k ce biti 2 a binarno 0011 i odstampaces hw
itd...

onda bi ti program izgledao ovako
for k:=1 to (2^n)-1 do
begin
odstampaj odgovarajuce karaktere
odstampaj novi red
end
 
Odgovor na temu

blaza
n/a

Član broj: 961
Poruke: 743
*.vdial.verat.net



+3 Profil

icon Re: Sve moguce kombinacije niza brojeva duzine n21.05.2004. u 16:27 - pre 242 meseci
Izmena: Skratio sam kod.
Code:

#include <iostream>
using namespace std;

int m;

void prikazi(int j = 0, int n = 0){
    static int niz[20] = {0};
    niz[n++] = j;
    for (int k = 1; k < n; k++)
        cout << niz[k];
    cout << " ";
    for (k = j + 1; k <= m; k++)
        prikazi(k, n);
}

int main(int argc, char** argv){
    cout << "Koliko (<19)?";
    cin >> m;
    prikazi();
    return 0;
}

O_o
 
Odgovor na temu

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.teol.net



+120 Profil

icon Re: Sve moguce kombinacije niza brojeva duzine n23.05.2004. u 21:16 - pre 242 meseci
Hvala vam mnogo. Zadatak sam uspio rijesiti ugradjujuci svoj kod u vas ali i dalje mi ostala nejasan onaj primjer sa rekurijom. A sto se tice onih ideja sa bitovima, nema se sta reci, ideja je odlicna.
...
 
Odgovor na temu

[es] :: Art of Programming :: Sve moguce kombinacije niza brojeva duzine n

[ Pregleda: 6883 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.