1. 程式人生 > >【最大回文長度】

【最大回文長度】

find 計算 序列 ring esp tchar ret stream font

#include<iostream>
#include<string>
using namespace std;
 
//遞歸方法,求解最長回文子序列
int find_str(char *str, int i, int j)
{
	if (i == j)
		return 1;	//只有一個元素,回文長度為1
	if (i > j) return 0;   //因為只計算序列str[i....j]
 
	//如果首尾相同
	if (str[i] == str[j])
		return find_str(str, i + 1, j - 1) + 2;
	//如果首尾不同
	int left=find_str(str, i, j - 1);
	int right=find_str(str, i + 1, j);
	if(left>right)return left;
	else return right;
}
 
int main()
{
	char str[] = "cabbeaf";
	int n = strlen(str);
	int res = find_str(str, 0, n - 1);
	cout << res<< endl;
	getchar();
	return 0;
}

【最大回文長度】