题源:点击打开链接
分析:有 n 个数组成的数组,可对数组中相邻的元素进行交换值,问是否能使给定的数组交换后相邻元素互不相等。可以输出YES ,反之 NO。
#include <stdio.h>
#define ll long long ;
int main()
{
int n;
scanf("%d",&n);
int a,b[1000];
memset(b,0,sizeof(b));
for(int i=0;i<n;i++) {
scanf("%d",&a);
b[a-1]++;
}
if(n%2!=0)
n = n/2 + 1;
else
n = n/2;
for(int i=0;i<1000;i++){
if(b[i]>n){
printf("NO");
return 0;
}
}
printf("YES");
return 0;
}