Algorytm "wypisujący" wszystkie ciągi zero jedynkowe długości n

0

Cześć, potrzebuję pseudokod lub schemat blokowy algorytmu który ma "wypisać" wszystkie ciągi zero jedynkowe długości n. N to liczba naturalna która sami zadajemy.

Dana jest liczba naturalna n. Wypisać wszystkie ciągi
zero-jedynkowe długości n

0

Generalnie robisz 1 funkcję, która potrafi wyświetlić liczbę binarną długości n i 2gą funkcję, która potrafi dodać 1 do liczby binarnej. Potem robisz tak:

  1. a = 0, n = 8
  2. printAsBinary(a, n)
  3. add1ToVariable(a, n)
  4. if a != 0:
    4.1. goto 2

Zgodnie z arytmetyką binarną funkcja dodająca 1 powinna ustawić same 0 w zmiennej, jeśli ta by potrzebowała więcej bitów niż możliwe na zapis. To możesz wykorzystać do sprawdzenia, czy wypisałeś już wszystkie.

2

Idea jest taka: zaczynając od zera, Dodajesz 2 ^ (n - 1)razy jeden:
0000 -> + 1
0001 -> + 1
0010 -> + 1
0011 -> + 1
.... I tak dalej.

1

Dla dużych n Wasze sposoby przekroczą zakres (dla tradycyjnych intów, ale w Pythonie3 już powinno działać). Natomiast można to zrobić rekurencyjnie:

ciag :: Integer -> [String]
ciag 0 = [""]
ciag n =
    [ ('0':x) | x <- ciag (n-1) ] ++
    [ ('1':x) | x <- ciag (n-1) ]

(przykład w Haskellu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1