最长回文数
问题描述
输入一个包含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; }
upd(2023/12/24)
main函数的第10行的两个条件可以交换,因为C++中的 && 有短路,可以优化 运行效率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~