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

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

06.11.2019, 23:50. Показов 3511. Ответов 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru