【题目描述】
回文数是指数位上的数字顺序读和逆序读都一样。有一串N个数字的回文数,现在有一位数字被修改成另一个数字,请输出新的数字串中最长的回文数,如果长度相等的有多串,请输出第一次出现的。
【输入格式】
第1行,1个整数N,范围在[1…1000]。
第2行,N个数字,每个数字用空格分开。
【输出格式】
一行,剩余的回文数。
【输入样例1】
5
1 2 3 2 2
【输出样例1】
2 3 2
【输入样例2】
8
4 3 2 6 6 2 0 4
【输出样例2】
2 6 6 2
【输入样例3】
10
11 10 10 11 5 23 11 10 10 11
【输出样例3】
11 10 10 11
一看题目,哇,这题好水啊,这不是有手就行吗?
#include<bits/stdc++.h>
using namespace std;
const int qwq = 1e6 +10;
long long a[qwq];
long long cnt;
int main(){
long long n;
cin>>n;
for(int i = 1;i <= n;i++){
cin>>a[i];
}
long long l = 1,r = n;
long long cnt = 0;
while(l <= r){
if(a[l] != a[r]){
cnt += l;
}
l++,r--;
}
if(cnt >= n/2 && n % 2 != 0){
for(int i = 1;i <= cnt-1;i++){
cout<<a[i]<<" ";
}
}else{
for(int i = 1;i <= cnt;i++){
cout<<a[i]<<" ";
}
}
for(int k = 1+cnt;k <= n-cnt;k++){
cout<<a[k]<<" ";
}
return 0;
}
看看这不是一个很正常的代码吗; 结果答案错误40分
仔细看看输入数据
2
4 2
我吐了啊,上面那个只是其中之一
这就把我整不会了