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

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

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

Author24 — интернет-сервис помощи студентам
Даны последовательности: 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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
4145 / 2565 / 646
Регистрация: 23.09.2014
Сообщений: 8,262
Записей в блоге: 2
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
Ответ Создать тему
Новые блоги и статьи
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи будет применено как метод обработки данных из double buffering. Формулы от LM конечно с ошибками.
Hrethgir 10.04.2025
В продолжение Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2. 5-14b-instruct . . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер