Форум программистов, компьютерный форум CyberForum.ru

Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX ) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выяснить, можно ли добавить в последовательность цифры и знаки арифметических действий http://www.cyberforum.ru/cpp-beginners/thread825311.html
1. Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение. Ограничения: 1 <= N <= 100 000. Ввод: В первой строке находится число скобок N, во второй - N символов из набора (, ), , {, }. Вывод: Выводится слово "Yes", если получить правильное...
C++ Программа, которая формирует список L, включив в него по одному разу элементы... Не могу решить задачу, компилирует но вылетает: Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой. # include <iostream.h> # include <string.h> struct List {int data;List *next; }; http://www.cyberforum.ru/cpp-beginners/thread825307.html
объясните пожалусто каждый пункт C++
Реализовать программу демонстрирующую решение поставленной задачи. Необходимо соблюсти условия перечисленные ниже. 1. Ввод исходных данных и вывод результата на экран производить в основной программе, решение задачи осуществлять в созданной функции. 2. Не применять индексированных переменных для доступа к элементам массивов, а использовать разыменование указателей. 3. Вызывать функции через...
C++ Можно ли переписать заполненный стек в массив?
Можно ли переписать заполненный стек в массив, а затем после сортировки запихнуть всё обратно в стек?
C++ Не воспринимает кириллицу http://www.cyberforum.ru/cpp-beginners/thread825297.html
Есть программа - вводим текст, выводит самое длинное слово. #include <iostream> using namespace std; char longest_word; unsigned short int temp; unsigned short int maximum = 1; bool letter (const char &text) {
C++ Выделение в исходном коде программы ключевых слов языка и операторов языка по словарю Разбор исходного текста на языке программирования. Выделение в исходном коде программы ключевых слов языка и операторов языка по словарю. Объясните что это значит? Пример можете показать? подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.04.2013, 14:22     Перечислить все последовательности из n нулей, единиц и двоек, в которых никакая группа цифр не повторяется два раза подряд (нет куска вида XX )
Если я правильно понял, решение в обобщенном виде. Выбираемая система счисления, выбираемая длина.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <cmath>
 
bool hasTwoDigitsInRow(int number, int radix) {
  int prevDigit = number % radix;
  number /= radix;
  while (number > 0) {
    if (number % radix == prevDigit) {
      return true;
    }
    prevDigit = number % radix;
    number /= radix;
  }
  return false;
};
 
void swap(char &a, char &b) {
  char c = a;
  a = b;
  b = c;
}
 
char *toRadix(int number, int radix, char *buffer) {
  static const char DIGITS[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  char *result = buffer;
 
  while (number > 0) {
    *buffer++ = DIGITS[number % radix];
    number /= radix;
  }
  *buffer = '\0';
  for (char *i = result, *j = buffer - 1; i < j; ++i, --j) {
    swap(*i, *j);
  }
  return result;
}
 
int main(int argc, char **argv) {
  char buffer[1024];
 
  int radix = 3; // система счисления. 3 == 0, 1, 2
  int numberOfDigits = 3; // количество цифр
  // минимум и максимум можно по-хитрее считать,
  // чтобы не было лишних итераций, но мне лень
  int maxNumber = pow(radix, numberOfDigits);
  int minNumber = pow(radix, numberOfDigits - 1);
  
  for (int i = minNumber; i < maxNumber; ++i) {
    if (!hasTwoDigitsInRow(i, radix)) {
      std::cout << toRadix(i, radix, buffer) << std::endl;
    }
  }
  
  
  std::cin.get();
  return 0;
}
 
Текущее время: 01:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru