Bibodui

Лаба 1 ЯМП (4 семестр)

Mar 3rd, 2021 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. /*Напишите программу, которая выводит все последовательности длины N из 0 и 1 без 2-х единиц подряд.
  2. * Например, если N=3, то это 000, 001, 010, 100, 101.
  3. */
  4.  
  5. #include <iostream>
  6. #include <Windows.h>
  7.  
  8. using namespace std;
  9.  
  10. void backTrack(int);
  11.  
  12. int N;
  13.  
  14. int* d;
  15.  
  16. int main()
  17. {
  18.     SetConsoleOutputCP(1251);
  19.     SetConsoleCP(1251);
  20.  
  21.     int q;
  22.  
  23.     do
  24.     {
  25.         cout << "Введите длину последовательности(N):" << endl;
  26.         cin >> N;
  27.         d = new int[N];
  28.         cout << "Полученные последовательности:" << endl;
  29.         backTrack(0);
  30.         delete[] d;
  31.         cout << "Для выхода введите '0':" << endl;
  32.         cin >> q;
  33.  
  34.     } while (q != 0);
  35. }
  36.  
  37. void backTrack(int pos)
  38. {
  39.     if (pos == N)
  40.     {
  41.         for (int i = 0; i < N; i++)
  42.             cout << d[i];
  43.         cout << "\n";
  44.         return;
  45.     }
  46.     for (int i = 0; i < 2; i++)
  47.     {
  48.         if (pos > 0 && d[pos-1] == 1 && i == 1)
  49.             return;
  50.         else
  51.         {
  52.             d[pos] = i;
  53.             backTrack(pos + 1);
  54.             d[pos] = 0;
  55.         }
  56.     }
  57. }
Add Comment
Please, Sign In to add comment