Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
-8 / 0 / 0
Регистрация: 12.06.2020
Сообщений: 35

Количество последовательностей длины N из нулей и единиц, в которых нет двух соседних единиц

13.06.2020, 15:52. Показов 9693. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Посчитайте количество последовательностей длины N из нулей и единиц, в которых нет двух соседних единиц.
ввод
В единственной строке входного файла одно число N (0<=N<=40).
вывод
Вывести одно число — искомое количество последовательностей.


Ввод
3
Вывод
5
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2020, 15:52
Ответы с готовыми решениями:

Определить количество последовательностей длины n из 0 и 1, не содержащих двух единиц подряд
По данному натуральному n определите количество последовательностей длины n из 0 и 1, не содержащих двух единиц подряд. Входные данные...

По данному натуральному n определите количество последовательностей длины n из 0 и 1, не содержащих двух единиц подряд
По данному натуральному n определите количество последовательностей длины n из 0 и 1, не содержащих двух единиц подряд. Гарантируется, что...

Составить последовательность из нулей и единиц без соседних единиц
помогите пожалуйста! проблема на экзамене составить последовательность из нулей и единиц без соседних единиц буду благодарен

16
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.06.2020, 21:57
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int N = int.Parse(File.ReadAllText("путь к файлу", Encoding.Default));
int col = 0;
if (N > 0)
{
    string btn = new String('1', N);
    int maxx = Convert.ToInt32(btn, 2);
    Console.WriteLine("Вывод всех вариантов последовательностей:");
    for (int i = 0; i <= maxx; i++)
    {
        string str = Convert.ToString(i, 2);
        if(str.Length < btn.Length)
            str = new String('0', btn.Length - str.Length) + str;
        Console.WriteLine(str);
        if (str.Contains("11") == false)
            col += 1;
    }
}
Console.WriteLine("Количество последовательностей без расположенных рядом единиц = " + col);
Console.Read();
0
1524 / 510 / 126
Регистрация: 09.01.2018
Сообщений: 1,560
13.06.2020, 22:09
chumich, тут речь немного о другом. Задача комбинаторная. Последовательности могут состоять только из 0 и 1. По сути - двоичные числа с заданной разрядностью N. Так вот надо для заданной разрядности вычислить сколько можно составить чисел, в которых не будет соседних единиц.

Т.е. из не нужно брать из текста и не нужно генерировать. Это нереально выполнить за разумное время (0 => 0xAA_AAAA_AAA).
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.06.2020, 22:18
Цитата Сообщение от escoult Посмотреть сообщение
тут речь немного о другом
Я вроде понял о чем речь )) В этом коде и получаются двоичные числа. Дополненные до нужной длины нулями.
Но, длина задается числом из файла:
Цитата Сообщение от Abricos47 Посмотреть сообщение
В единственной строке входного файла одно число N
И в строке 14 кода исключаются последовательности с соседними единицами.
0
1524 / 510 / 126
Регистрация: 09.01.2018
Сообщений: 1,560
13.06.2020, 22:52
Цитата Сообщение от chumich Посмотреть сообщение
Я вроде понял о чем речь ))
Задайте для N значение 31, посмотрите сколько будет работать программа. Можно даже отключить вывод str, для экономии.
А по условию N может быть до 40. Закончит ли до завтра )).
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.06.2020, 23:03
Цитата Сообщение от escoult Посмотреть сообщение
Задайте для N значение 31, посмотрите сколько будет работать программа.
Это - да. Долго )). Но, тем не менее, все-таки, условия задачи выполнены, хоть и не рационально.
0
1524 / 510 / 126
Регистрация: 09.01.2018
Сообщений: 1,560
13.06.2020, 23:14
Цитата Сообщение от chumich Посмотреть сообщение
тем не менее, все-таки, условия задачи выполнены
Не все. Диапазона int не хватит. Надо на long заменить. Хотя это не важно, окончания работы программы, все равно вряд ли кто дождется ))
1
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.06.2020, 23:16
Цитата Сообщение от escoult Посмотреть сообщение
Диапазона int не хватит. Надо на long заменить
Теперь все )))
0
Жесток & Наивен
 Аватар для sanec38
483 / 188 / 91
Регистрация: 02.02.2017
Сообщений: 427
14.06.2020, 05:16
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private static long F(int n, int[] arr)
        {
            if(n == 0) return 0;
            if(n == 1) return 2;              
            if(n == 2)  return 3;                  
            arr[1] = 2;
            arr[2] = 3;
            for(int i = 3; i < arr.Length; i++)
            {
                arr[i] = arr[i - 1]+ arr[i - 2];
            }
            return arr[n]; 
        }
        private static void Main(string[] args)
        {
            var n = 40;
            var arr = new int[n + 1];
            Console.WriteLine(F(n,arr));             
            Console.ReadKey();
        }
Прочитайте динамическое программирование, в частности одномерная динамика, там часто этот пример разбирают, вы уведите что вычисляться по тому же принципу как и числа Фибоначчи, только начальные значения отличаются.
Вложения
Тип файла: pdf lec5.pdf (596.4 Кб, 53 просмотров)
3
Жесток & Наивен
 Аватар для sanec38
483 / 188 / 91
Регистрация: 02.02.2017
Сообщений: 427
14.06.2020, 05:26
Там только функция вернуть должна int.
0
1524 / 510 / 126
Регистрация: 09.01.2018
Сообщений: 1,560
14.06.2020, 06:15
Цитата Сообщение от sanec38 Посмотреть сообщение
Прочитайте динамическое программирование, в частности одномерная динамика
Хорошая лекция +
Комбинаторикой она тоже легко решается, но требуются большие факториалы, без BigInt не обойтись. Не стал выкладывать поэтому. Рост по типу Фибоначчи, я кстати заметил, но я его на память не помню, думал ошибся.

пс. Брутфорсом тоже, конечно, решается, недели за 2 )).
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
14.06.2020, 08:46
Вот так можно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public static int Combinations(int length)
        {
            return Recursion(0, length - 1) + Recursion(1, length - 1);
        }
 
        public static int Recursion(int number, int length)
        {
            if (length > 1)
            {
                return Recursion(0, length - 1) + (number == 0 ? Recursion(1, length - 1) : 0);
            }
            if (number == 0)
                return 2;
            else
                return 1;
        }
Добавлено через 48 минут
Кстати, как заметили выше - это числа Фибоначчи. Но с начальными значениями не 1 и 1, а 2 и 3. То есть достаточно получать для длины последовательности N - число Фибоначчи на позиции N + 2.
C#
1
2
3
4
public static long FibonachyBenne(long n)
{
    return (long)Math.Round(Math.Pow((1 + Math.Sqrt(5)) / 2.0, n) / Math.Sqrt(5), MidpointRounding.AwayFromZero);
}
0
1 / 1 / 0
Регистрация: 02.10.2023
Сообщений: 39
09.01.2024, 13:50
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cmath>
int main()
{
    int n;
    std::cin >> n;
    int cnt1 = 1, cnt0 = 1;
    for (int i = 2; i <= n; i++) {
        int temp1 = cnt0;
        cnt0 += cnt1;
        cnt1 = temp1;
    }
    std::cout << cnt0 + cnt1;
}
0
 Аватар для Andrey-MSK
3313 / 2200 / 387
Регистрация: 14.08.2018
Сообщений: 7,404
Записей в блоге: 4
09.01.2024, 14:09
efewfedd, А причем тут C++?
0
1 / 1 / 0
Регистрация: 02.10.2023
Сообщений: 39
11.01.2024, 09:45
нужен же алгоритм. Какая разница на каком языке. А если тупо дасть код, то он/она его скопирует и всё, а так хоть осознание будет
0
 Аватар для Andrey-MSK
3313 / 2200 / 387
Регистрация: 14.08.2018
Сообщений: 7,404
Записей в блоге: 4
11.01.2024, 09:48
Цитата Сообщение от efewfedd Посмотреть сообщение
нужен же алгоритм. Какая разница на каком языке.
Ну дак и напишите его блок-схемой ТС C# не знает, а вы ему C++ пихаете
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 962
11.01.2024, 15:06
комрады, тут 40 возможных входных значений и соответственно всего 40 возможных ответов, можно же просто посчитать все нерациональным алгоритмом и закешировать как следует. будет большой плюс к быстродействию
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2024, 15:06
Помогаю со студенческими работами здесь

Дана строка, состоящая из групп нулей и единиц. Посчитать количество нулей и единиц
Дана строка, состоящая из групп нулей и единиц. Посчитать количество нулей и единиц.

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

В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством символов
Я сделал эту задач,ну попросили теперь сделать заменить все cout через puts,я попытался но у меня не так работает как надо,надеюсь...

Сформировать матрицу, состоящую из нулей и единиц, причем количество единиц строго равно количеству строк
Сформировать матрицу, состоящую из нулей и единиц, причем количество единиц строго равно количеству строк.

В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством символов.
В строке, состоящей из групп нулей и единиц, подсчитать количество единиц в группах с нечетным количеством символов. #include...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru