Description

给出一个数列,判断这个数列是否左右对称。

例如:给出四个数2 5 5 2,则这个数列对称;

给出五个数 1 2 3 1 2,则这个数列不对称。

Format

第一行:一个正整数 n(n<500)n(n<500),表示数据个数; 第二行: n 个不超过1000的正整数,依次表示数列中的每个数

Output

如果对称,输出Yes;否则输出No。

输入样例1

5
4 5 6 5 4

输出样例1

Yes

输入样例2

4
2 2 3 3

输出样例1

No

0Wrong Answer

using namespace std;
int c[1010],n=0;
int main(){
	int s;
	cin>>s;
	int y=0;
	for(int i=1;i<=s;i++)cin>>c[i];
	for(int i=1;i<=s;i++){
    if(i%2==1&&i>=s-i)break;
		if(c[i]==c[s-y])n++;
		y++;
	}
	if(s==(n-1)*2+1)cout<<"Yes";
	else cout<<"No";
	return 0; 
}

2 条评论

  • @ 2025-4-6 10:37:32

    Accepted

    #include<iostream>
    using namespace std;
    long long cnt[1010];
    int main(){
    	long long g,sum=0;
    	cin>>g;
    	int o=g;
    	for(long long i=1;i<=g;i++){
    		cin>>cnt[i];
    	}
    	for(long long i=1;i<=g;i++){
    		if(cnt[i]==cnt[o]){
    			sum++;
    		}
    		o--;
    	}
    	if(g==sum){
    		cout<<"YES";
    	}
    	else{
    		cout<<"NO";
    	}
    	return 0;
    }
    
    • @ 2024-11-24 13:33:56
      #include<iostream>
      using namespace std;
      int c[1010],n=0;
      int main(){
      	int s;
      	cin>>s;
      	int y=0;
      	for(int i=1;i<=s;i++)cin>>c[i];
      	for(int i=1;i<=s;i++){
          if(i%2==1&&i>=s-i)break;
      		if(c[i]==c[s-y])n++;
      		y++;
      	}
      	if(s==(n-1)*2+1)cout<<"Yes";
      	else cout<<"No";
      	return 0; 
      }
      
      • 1