@FX-Mercury

Строки Фибоначчи. Как обработать очень длинную строку в этой задачи?

#include <fstream>
#include <cstring>
#include <string>
#include <iostream>

	using namespace std;

int getmatch( int index, string seq )
{
	index--;

	string fib[ 46 ] = { "A", "B" };

	for( int i = 2; i < index + 1; i++ ) {
		fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ];
	}

	int cnt = 0, offset = strlen( seq.c_str() );

	char *p = const_cast<char*>(fib[ index ].c_str());

	while( p = strstr( p, seq.c_str() ) ) {

		p = p + offset - 1;

		cnt++;
	}

	return cnt;
}

int main( void )
{
	ofstream of_file("output.txt");
	ifstream if_file("input.txt");

	string seq;
	int    index;

	//if_file>>index>>seq;

	//of_file<<getmatch( index, seq );


	//cin>>index>>seq;
	
	index = 10;

	seq = "BBABAB";

	
	cout<<' '<<getmatch( index , seq )<<endl;


	if_file.close();
	of_file.close();
	
	return std::cin.get();
}


происходит вылет при index = 45

Задача считает количество вхождений подстроки в строку фибоначчи
  • Вопрос задан
  • 523 просмотра
Пригласить эксперта
Ответы на вопрос 1
BuriK666
@BuriK666
Компьютерный псих
string fib[ 46 ] = { "A", "B" };
у Вас фиксированное кол-во строк 46.
Используйте динамическую память.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы