язык с++
B4. Двоичные строки заданной длины в обратном порядке
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
По данному числу N выведите все строки длины N из нулей и единиц в обратном лексикографическом порядке.

Формат ввода
Задано единственное число N. (1 ≤ N ≤ 10)

Формат вывода
Необходимо вывести все строки длины N из нулей и единиц в обратном лексикографическом порядке.



#include
#include

using namespace std;

void fun_1(char ch, char arr[], int n)
{
for (int i = 0; i < n; i++)
{
arr[i] = ch;
}
}

void fun_2(char arr[], int n)
{
for (int i = 0; i < n; i++)
{
cout << arr[i];
}
cout << endl;
}

int fun_3(char ch, char arr[], int n)
{
unsigned short count = 0;
for (int i = 0; i < n; i++)
{
if (arr[i] == ch)
count++;
}
return count;
}

int main()
{
int n;
cin >> n;
char* arr = new char[n];
fun_1('0', arr, n);

fun_2(arr, n);

do
{
unsigned short tm = n;
while (arr[tm - 1] == '1')
tm--;
arr[tm - 1] = '1';
while (tm < n)
{
tm++;
arr[tm - 1] = '0';
}

fun_2(arr, n);
}
while (fun_3('0', arr, n) != 0);
return 0;
}

Приложения:

anonymazer2: там программа
anonymazer2: надо сделать наоборот
anonymazer2: программу
anonymazer2: я там написал программу
anonymazer2: но она выводит наоборот

Ответы

Ответ дал: LymarIvan
2

#include <iostream>

#include <cmath>

using namespace std;

int main() {

   int N, line[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

   cin >> N;

   for (int i = 0; i < pow(2, N); i++) {

       for (int j = 0; j < N; j++)

           cout << line[j];

       if(i!=pow(2, N)-1)

           cout << endl;

       for (int j = N - 1; j >= 0; j--) {

           if (line[j] == 0)

               line[j] = 1;

           else {

               line[j] = 0;

               break;

           }

       }

   }

}


anonymazer2: спасибо
Вас заинтересует