Предмет: Информатика,
автор: anonymazer2
язык с++
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:
там программа
Ответы
Автор ответа:
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;
}
}
}
}
Похожие вопросы
Предмет: Русский язык,
автор: NAemnik1996
Предмет: Русский язык,
автор: alinka12ivanova
Предмет: Українська мова,
автор: artem2003zhy
Предмет: Химия,
автор: sashaejjddj