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

Задача: плохая подстрока. Усовершенствовать алгоритм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очистка экрана в консоли http://www.cyberforum.ru/cpp-beginners/thread1026036.html
Всем привет, вот такой вот вопрос. вот например у меня в консоли текст, я его к примеру прочитала, и затем мне нужно нажать интер или любую клавишу, чтобы экран очистился, и запустилась сама...
C++ Объектно-ориентированного проектирования и проектирования на основе структур данных Помогите решить задание, так как вообще не понимаю, что тут можно сделать. Решить задание с помощью объектно-ориентированного проектирования и проектирования на основе структур данных. Начальные... http://www.cyberforum.ru/cpp-beginners/thread1026034.html
C++ Дан массив, размерностью nxn, подсчитать норму матрицы по формуле
дан массив, размерностью nxn, подсчитать норму матрицы по формуле Добавлено через 1 минуту формула Добавлено через 7 минут вот Добавлено через 1 минуту |A|=\sum max ai,j
C++ Для каждого столбца массива найти номер последнего нечетного элемента и записать данные в новый массив
Дан массив размером nxn, элементы которого целые числа. Для каждого столбца найти номер последнего нечетного элемента и записать данные в новый массив.
C++ Массивы. Расположить элементы в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread1026016.html
Дан массив M(15) вещественных чисел. Расположить элементы в обратном порядке.
C++ спираль архимеда Наткнулся на задачку, битый час голову ломаю, суть задачи такова, с++ построить спираль архимена из чисел формата 30 29 28 27 26 25 31 12 11 10 9 24 32 13 2 1 8 23 33 14 3 0 7 22... подробнее

Показать сообщение отдельно
HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 751
Записей в блоге: 1

Задача: плохая подстрока. Усовершенствовать алгоритм - C++

02.12.2013, 19:41. Просмотров 807. Ответов 2
Метки (Все метки)

Задача:

Найдите, сколько существует строк заданной длины n, состоящих только из символов 'a', 'b' и "c", и не содержащих подстроки "ab".

вот мое решение:
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int n;
    
    __int64 a = 0, b, len;
    char str[ 50 ];
    
    cin >> n;
    b = pow( (double)3, (double)n );
    a = 0;
    
    for( int i = 0; i < b; i++ )
    {
         strcpy( str, "" );
         itoa( i, str, 3 );
         
         len = strlen( str );
         
         for( int j = 0; j < len - 1; j++ )
         {
              if( str[ j ] == '1' && str[ j + 1 ] == '2' )
              {
                  a++;
                  break;
              }
         }
    }
    
    cout <<  b - a << "\n";
   return system("pause");
}
оно работает, но работает очень долго на больших n. Вопрос: как ускорить алгоритм?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru