问题描述
输入一个包含N
个正整数的数组,求出这个数组中包含的最长的回文数组是什么, 如果有相同长度的最长回文数,输出最靠前的一个。
解题思路
伪码:
INPUT A[]
FOR I IN 1,N{
FOR J IN I,N{
IF HUIWEN(A,I,J) && J-I+1>MAXLEN{
X,Y,MAXLEN = I,J,J-I+1
}
}
}
OUTPUT A[X TO Y]
上代码
int n;
cin >> n;
int a[n + 1];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int x, y, max = -1;
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
if (f(a, i, j) && (j - i + 1) > max) {
x = i;
y = j;
max = j - i + 1;
}
}
}
for (int i = x; i <= y; i++) {
cout << a[i] << " ";
}
f()的定义
bool f(int a[], int i, int j) {
for (; i < j; i++, j--) {
if (a[i] != a[j]) {
return false;
}
}
return true;
}
标签:int,max,MAXLEN,数组,最长,回文
From: https://www.cnblogs.com/algorithm-hu/p/17663311.html