Codeforce 1324B—— Yet Another Palindrome Problem (子列回文)

Codeforce 1324B Yet Another Palindrome Problem

题目

在这里插入图片描述
在这里插入图片描述

题目大意:
给你一串数,他含有元素大于等于3的子列如果是回文的那么就输出YES

题目分析:
只要原来的数列中,有不相邻的两个元素相等就可以

AC代码

//https://codeforces.com/problemset/problem/1324/B 
#include<stdio.h>
#include<stdlib.h>
#include<cmath>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int a[5005],t,n,ans=0;


int main(){
	scanf("%d",&t);
	while(t--){
		int n,ans=0;
		scanf("%d",&n);
		for(int i = 0;i<n;i++)
			scanf("%d",&a[i]); 
		for (int i=0;i<n;i++){
			for(int j = i+2;j<n;j++){
				if(a[i]==a[j]){
					ans = 1;
					break;
				}
			}
			if(ans)
			break;//找到一个就可以了 
		}
		if(ans)
		printf("YES\n");
		else
		printf("NO\n");
		
		
	}
	
	
}

再看看大佬们的优质代码

在这里插入图片描述大佬的博客在这里
比起我这暴力扫,大佬的结构体和卡区间的方法更为方便。并且对于边界的处理,再a[0]和a[n+1]的位置设置永远可能和数列中数相等的数,十分巧妙。

发布了50 篇原创文章 · 获赞 50 · 访问量 2726

猜你喜欢

转载自blog.csdn.net/weixin_45691686/article/details/104856342
今日推荐