首页 > 其他分享 >最长回文数

最长回文数

时间:2023-08-28 20:33:35浏览次数:28  
标签:int max MAXLEN 数组 最长 回文

问题描述


输入一个包含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

相关文章

  • 回文自动机(PAM)学习笔记
    传送门我认为理解回文自动机需要图,以\(abbaabba\)为例,它的回文树是这样的:令树上的每一个点为一个回文串,其中,\(1\)为根的树中的点回文串长度为奇数,且最中间的那个字母就是\(1\)连向其他点的的边的字母,而\(0\)为根的树中的点回文串长度为偶数。举点例子吧:点\(2\)的回文串为\(a\)......
  • LeetCode 131. 分割回文串
    题目链接:LeetCode131.分割回文串题意:给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。解题思路:dfs算法的过程其实就是一棵递归树,所有的dfs算法的步骤大概有以下几步:找到中止条件:即......
  • 12.Acwing基础课第799题-简单-最长连续不重复子序列
    12.Acwing基础课第799题-简单-最长连续不重复子序列题目描述给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不......
  • 剑指 Offer 48. 最长不含重复字符的子字符串(中等)
    题目:classSolution{//本题采用双指针滑动窗口的方法public:intlengthOfLongestSubstring(strings){map<char,int>m;//map里面存放的是**每个字符对应的下一个索引**intresult,l=0,r=0;while(r<s.size()){i......
  • 【LeetCode动态规划#15】最长公共子序列II
    最长公共子序列(二)描述给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列数据范围:0≤∣���1∣,∣���2∣≤20000≤∣str1∣,∣str2∣≤2000要求:空间复杂度�(�2)O(n2),时间复杂度�(�2)O(n2)......
  • 【学习笔记】Manacher(马拉车)求回文子串
    点击查看目录目录参考资料与图片来源算法思路具体实现例题解题参考资料与图片来源参考博客我觉得这个博客讲的不好,他只讲看规律得到的结论,原因却不说,怪。参考博客2oi-wiki算法思路对于长度可能为奇可能为偶的情况,首先要预处理字符串,在每个字符左右增加一个无关字符#。......
  • hdu 1003 最大最长上升子序列 贪心
    要想找到符合条件的序列,我们应该有以下条件 一个数重头开始遍历相加,如果这个数大于0的话,继续加后面的数,如果小于0的话,重后面的数开始重新遍历;这个过程中保证了大数一定会出现,所以应该找出大数;sum大于0的话,与后面的数相加有可能是最大数;如果小于0,则,重新开始会比以前的数更大;一下是......
  • hdu 1003 最大最长子序列 dp
    我的dp思路是记b[j]表示到到j位,最大最长的子序列的和则可得状态转移方程b[j]=max(b[j-1]+a[j],a[j]);因为每个数都有两种状态,要么和前面相连,要么自己相连;让后再比较出来最大值;一下是我的代码#include<stdio.h>#include<stdlib.h>#include<stdlib.h>#include<math.h>#includ......
  • [算法学习笔记] O(nlogn)求最长上升子序列
    朴素dp求最长上升子序列大家应该都会朴素dp求最长上升子序列,简单回忆一下。我们令\(f_i\)表示以第\(i\)位元素为结尾的最长上升子序列长度。满足\(\forallj<i\),则有:\(f_i=max(f_i,f_j+1)[a_j<a_i]\)Explanation:\(a_i\)前面若有多个可以拼接的序列,则拼一个......
  • 线性DP-最长上升子序列
    概念最长上升子序列是指一个序列中最长的单调递增的子序列,字符子序列指的是字符串中不一定连续但先后顺序一致的n个字符,即可以去掉字符串中的部分字符,但不可改变其前后顺序。求最长上升子序列的长度可以用线性DP。思路1.读入数据,dp[i]代表以第i个数为结尾的最长上升子序列......