Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 03.11.2019
Сообщений: 36

Магическая последовательность

06.11.2019, 23:50. Показов 3450. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны последовательности: 1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, . . .
Выпишите К-ю последовательность.
Input Output
4 1211
Заранее спасибо!

P.S. Нашёл в Интернете как строится эта последовательность, но не могу реализовать.
1 читается как «одна единица», то есть 11
11 читается как «две единицы», то есть 21
21 читается как «одна двойка, одна единица», то есть 1211
1211 читается как «одна единица, одна двойка, две единицы», то есть 111221
111221 читается как «три единицы, две двойки, одна единица», то есть 312211
312211 читается как «одна тройка, одна единица, две двойки, две единицы», то есть 13112221
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2019, 23:50
Ответы с готовыми решениями:

Задана последовательность слов. Определить частоту вхождения каждого слова в последовательность.
Доделать программу, чтобы работала как надо Задана последовательность слов. Определить частоту вхождения каждого слова в...

Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей
Дана последовательность действительных чисел a1 <= a2<= ... <=an вставить действительное число b так чтобы последовательность осталась...

Построить последовательность из 0 и 1, в которой Bi=1 если элементы i-го столбца образуют убывающую последовательность
Дана действительная квадратная матрица порядка n. Построить последовательность В1,В2,...,Вп из нулей и единиц, в которой Bi=1 тогда,и...

14
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
07.11.2019, 10:31
Цитата Сообщение от Snaces Посмотреть сообщение
но не могу реализовать.
декомпозиция это наше усё!

для начала вот такая заготовка:
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
///----------------------------------------------------------------------------|
/// Магическая последовательность.
///----------------------------------------------------------------------------:
#include <iostream>
 
struct sTask
{   sTask()
    {   char* a   = new char[1024];
        char* res = new char[1024];
        a[0] = '1';
        
        int k = 7; //std::cin >> k;
        
        while(k-- != 0)
        {   int count = 0;
            for(int i = 1; a[i] != 0; i++)
            {   
                ... /// Считаем кол-во одинаковых элементов.
                ... /// ...
                
            }
            res[...] = 0; // терминируем res.
            
            std::swap(a, res);
        }
        
        std::cout << res << "\n";
 
        std::cin.get();
        delete[] a;
        delete[] res;
    }
 
};
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    sTask task;
    return 0;
}
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 10:43
передумал, не знаю как удалить
1
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
07.11.2019, 10:54
outoftime, нет, нет.
спасибо я вам кредитом за "могу реализовать"
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 11:08
XLAT, что если там 10 единиц?

Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
for(int i = 1; a[i] != 0; i++)
Это условие смущает

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
for(int i = 1; a[i] != 0; i++)
Это условие смущает
Цитата Сообщение от XLAT Посмотреть сообщение
спасибо я вам кредитом за "могу реализовать"
Меня brute-force не интересует, только https://www.cyberforum.ru/cgi-bin/latex.cgi?O(1), если найду - отпишусь.

Добавлено через 4 минуты
Snaces, XLAT, лень, как-то. Надо выписать штук 10 или 100 первых и посмотреть какие у итоговой последовательности есть закономерности, благо наш мозг заточен чтобы таковые искать, главное подать информацию в формате удобном для поиска оных.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
07.11.2019, 11:19
Цитата Сообщение от outoftime Посмотреть сообщение
лень, как-то. Надо выписать штук 10 или 100 первых
brute-force-ом выведи
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
07.11.2019, 11:30
https://www.rosettacode.org/wi... sequence#C
2
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
07.11.2019, 11:36
Цитата Сообщение от outoftime Посмотреть сообщение
что если там 10 единиц?
преобразовать 10 в строку и записать в массив.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 12:01
XLAT, чтобы выписать последовательность, делаю вот так
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string>
#include <sstream>
 
int main() {
    int n = 10, k = n;
    std::string tmp = "1";
    while (--k) {
        std::ostringstream ss(std::ios_base::app);
        size_t count = 1;
        auto cur = std::next(tmp.begin()), prev = tmp.begin();
        for (; cur != tmp.end(); ++cur) {
            if (*cur == *prev) {
                ++count;
            } else {
                ss << count << (*prev);
                count = 1;
                prev = cur;
            }
        }
        ss << count << (*prev);
        std::cout << (n-k) << ": " << tmp << std::endl;
        tmp = ss.str();
    }
    std::cout << (n-k) << ": " << tmp << std::endl;
}


Добавлено через 6 минут
Цитата Сообщение от _stanislav Посмотреть сообщение
brute-force-ом выведи
было выше
Цитата Сообщение от outoftime Посмотреть сообщение
Меня brute-force не интересует
Добавлено через 51 секунду
XLAT, я сильно не вникал, просто показалось что нули в вашей реализации недопустимы
0
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
07.11.2019, 12:16
Цитата Сообщение от outoftime Посмотреть сообщение
просто показалось что нули в вашей реализации недопустимы
ноль там чтоб завершить строку.
обычная, кровь из носа необходимая, практика.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
07.11.2019, 13:02
XLAT, прикинул первые 50 строк, последовательность не плохо так читается начиная с начала. Всматриваться дальше 4ого столбца тяжеловато. Всё ещё считаю что поиск https://www.cyberforum.ru/cgi-bin/latex.cgi?k-ого члена последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?O(1), доказывать, просто, лень. Скорость роста длины последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?2^k в худшем случае, если нету одинаковых соседей. На практике, около 3-4 членов удваивают количество цифр последовательности.
1
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
07.11.2019, 21:33
Snaces,
я бы доделал бы свою прогу, но
nalbe666 кайф поломал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char *a = malloc(2), *b = 0, *x, c;
    int cnt, len = 1;
 
    for (sprintf(a, "1"); (b = realloc(b, len * 2 + 1)); a = b, b = x) {
        puts(x = a);
        for (len = 0, cnt = 1; (c = *a); ) {
            if (c == *++a)
                cnt++;
            else if (c) {
                len += sprintf(b + len, "%d%c", cnt, c);
                cnt = 1;
            }
        }
    }
 
    return 0;
}
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
#include <iostream>
#include <sstream>
#include <string>
 
std::string lookandsay(const std::string& s)
{
    std::ostringstream r;
 
    for (std::size_t i = 0; i != s.length();) {
        auto new_i = s.find_first_not_of(s[i], i + 1);
 
        if (new_i == std::string::npos)
            new_i = s.length();
 
        r << new_i - i << s[i];
        i = new_i;
    }
    return r.str();
}
 
int main()
{
    std::string laf = "1";
 
    std::cout << laf << '\n';
    for (int i = 0; i < 10; ++i) {
        laf = lookandsay(laf);
        std::cout << laf << '\n';
    }
}
0
1 / 1 / 0
Регистрация: 03.11.2019
Сообщений: 36
07.11.2019, 21:45  [ТС]
XLAT
Ой, твоя прога мне была более понятна, эти как-то не очень, есть незнакомые функции. Доделаешь свою старую но без структуры? (и без потоков)
0
Just Do It!
 Аватар для XLAT
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,049
Записей в блоге: 3
08.11.2019, 00:15
Цитата Сообщение от Snaces Посмотреть сообщение
твоя прога мне была более понятна
ещё бы, конечно понятно, так как основная часть спрятана в тумане.

берите вон вариант на СИ пробуйте разбираться,
там чуть больше, чем десять строчек.

Добавлено через 15 минут
Snaces,
вот для вас доделал:
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
///----------------------------------------------------------------------------|
/// Магическая последовательность
///----------------------------------------------------------------------------:
#include <iostream>
 
///----------------------------------------------------------------------------|
/// Main.
///----------------------------------------------------------------------------:
int main()
{   
    char* a   = new char[1024];
    char* res = new char[1024];
        a[0] = '1';
        a[1] = 0;
        
        int k = 15; //std::cin >> k;
        
        while(k-- != 0)
        {   
            char count = 1;
            int j     = 0;
            for(int i = 0; a[i] != 0; i++)
            {   
                if(a[i] == a[i+1])
                {   count++;
                }
                else
                {   res[j++] = count + '0';
                    res[j++] = a[i];
                    count = 1;
                }
            }
            res[j] = 0;
            std::swap(a, res);
        }
    std::cout << a << "\n";
 
    std::cin.get();
    delete[] a;
    delete[] res;
    
    return 0;
}
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
08.11.2019, 17:55
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
#include <iostream>
#include <sstream>
using namespace std;
 
string f(string t,string s){
   stringstream x;
   x<<t;
   s="";
   while(x>>t){
     s+=t.size()+'0';
     s+=t[0];
    }
  return s;
 }
 
int main()
{
 string s="1",t;
 size_t i,k;
 
 cin>>k;
 for(int j=1;j<k;j++){
    t+=s[0];
    i=1;
    while(s[i]!='\0'){
       if(s[i]==s[i-1])t+=s[i];
       if(s[i]!=s[i-1]){
          t+=' ';
          t+=s[i];
        }
       i++;
     }
    s=f(t,s);
    t="";
   }
 cout <<s<<"\n";
 system("pause");
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2019, 17:55
Помогаю со студенческими работами здесь

Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующе
Вводится последовательность из N вещественных чисел. Определить, является ли последовательность знакочередующейся. не пойму как сделать,...

Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей.
дана последовательность действительных чисел. вставить в нее действительное число b так, чтобы последовательность осталась неубывающей. ...

Можно ли разрезать последовательность на две части и поменять их местами, чтобы последовательность стала симметричной?
Здрасте! Помогите пожалуйста с задачой из универа по с++ &quot;Можно ли разрезать последовательность на две части, и поменять их местами,...

Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность
Дана последовательность действительных чисел X1,X2,X3,…,Xn (n&gt;2, заранее неизвестно). Если последовательность отсортирована по возрастанию,...

Дана последовательность, элементы которой есть целые двузначные числа. Упорядочить последовательность по убыванию произведений цифр
Здравствуйте. На форуме есть код подобный, но по возрастанию сумм элементов. Как мне подправить код, чтобы было &quot;по убыванию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 09.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru