【最大回文长度】

#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;
}

猜你喜欢

转载自www.cnblogs.com/EstherLjy/p/9392314.html
今日推荐