这题是目的是把黑球和白球分开连续放,事实上只要把其中一种颜色分好在一边就可以,可以绕一个球转即是第n个球可以放在n-2或者n+2上,因为这是个环,所以只需要把黑球或者白球连续放好就可以,当一共有奇数个球时,如:7个 x 1 0 1 0 1 0(x为任意颜色球)——x一开始是为奇位,然后开始把x向右移动。0 1 x 1 0 1 0——0 1 0 1 x 1 0——0 1 0 1 0 1 x——0 x 0 1 0 1 1(注意这是环) 到这里x到了偶数位。。所以就是说当总球数为奇时奇偶位是可以互换的。所以当总球数为奇数时,无论如何都能分好。当总球数为偶数时,任意选一种球判断,我们假如分好了,那偶数位上的黑球和奇数位上黑球个数相差最大只能为1。所以以此判定
1 #include<stdio.h> 2 #include<math.h> 3 int a[30]; 4 int main() 5 { 6 int n,sum,i,ji=0,ou=0; 7 scanf("%d",&n); 8 while(n--) 9 { 10 scanf("%d",&sum); 11 for(i=0;i<sum;i++) 12 { 13 scanf("%d",&a[i]); 14 if(a[i]==0&&i%2==0) 15 ji++;\判断白球在奇数位置有几个 16 else if(a[i]==0&&i%2!=0) 17 ou++;\判断白球在偶数位置有几个 18 } 19 if(sum%2!=0||fabs(ou-ji)<=1) 20 printf("YES "); 21 else 22 printf("NO "); 23 } 24 return 0; 25 26 }