eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytm wyboru k z nRe: Algorytm wyboru k z n
  • Data: 2015-07-24 19:48:51
    Temat: Re: Algorytm wyboru k z n
    Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 24.07.2015 17:32, Borneq wrote:
    > Jak wypisać wszystkie możliwości k z n?na przykład wypisać 32-bitowe
    > liczby, które by miały 6 bitów zapalonych?


    Nakarm googla
    Enumerating k-combinations
    (enumerate) numbers with k bits set
    matlab nchoosek.m ;-)

    http://stackoverflow.com/questions/127704/algorithm-
    to-return-all-combinations-of-k-elements-from-n

    Tu masz kilka różnych algorytmów, włącznie z kodami greya.


    Podoba mi się ten bitowy:
    http://stackoverflow.com/questions/1851134/generate-
    all-binary-strings-of-length-n-with-k-bits-set
    http://www.graphics.stanford.edu/~seander/bithacks.h
    tml#NextBitPermutation

    Po małym odkurzeniu:

    int main() {
    int k=4;
    const int n=7;
    uint64_t v= (1<<k) - 1;

    while ( v < (1<<n) ) {
    cout<<bitset<n>(v)<<endl;
    uint64_t t = (v | (v - 1)) + 1;
    v = t | ((((t & -t) / (v & -v)) >> 1) - 1);
    }
    }

    bitset<n> jest tylko do ładnego wyświetlania.

    Ograniczone jest niestety do 64 obiektów.
    boost::multiprecision::int128_t i podobne marudzą na
    jednoargumentowy minus, można je nakłonić do współpracy tak:
    v = t | ((((t & 0-t) / (v & 0-v)) >> 1) - 1);

    pzdr
    bartekltg


    0001111
    0010111
    0011011
    0011101
    0011110
    0100111
    0101011
    0101101
    0101110
    0110011
    0110101
    0110110
    0111001
    0111010
    0111100
    1000111
    1001011
    1001101
    1001110
    1010011
    1010101
    1010110
    1011001
    1011010
    1011100
    1100011
    1100101
    1100110
    1101001
    1101010
    1101100
    1110001
    1110010
    1110100
    1111000

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: