传送门:CF—1324B
测试样例:
input
5
3
1 2 1
5
1 2 2 3 2
3
1 1 2
4
1 2 2 1
10
1 1 2 2 3 3 4 4 5 5
output
YES
YES
NO
YES
NO
题目大意:
t个测试样例,每个测试样例给定一个数n和n个数。问这n个数中是否存在长度至少为3的某个子序列是回文。
注:如果可以通过在不改变元素的顺序的情况下从a(不一定是连续的)中移除一些(可能是零)元素来获得b,则数组b被称为数组a的子序列。
思路:1<=t<=100,3<=n<=5000,根据数据范围可知暴力枚举。
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
int a[5005];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int flag=0;
for(int i=0;i<n;i++)
for(int j=i+2;j<n;j++)
if(a[i]==a[j])
{
flag=1; //找到就提前退出循环
break;
}
if(flag)
puts("YES");
else
puts("NO");
}
return 0;
}