zoj1028-Flip and Shift

2014-11-23 23:18:23 · 作者: · 浏览: 6
题意:有相互交叉的黑白两种颜色的小球,每一个小球每次可以跳两格;问你是否可以将同种颜色的小球移动到连续的位置上去;
分析:
A、当球的总数是奇数的时候,无论怎么移动,均能使小球移动到满足的位置;
B、当球的总数是偶数的时候,当处于奇数与偶数位置上的某一种颜色的球的差值小于2时,也能移动到满足的位置,否则不能。
 
#include   
#include   
#include   
#include   
#include   
#include   
  
using namespace std;  
  
int main()  
{  
    int Case , flag , n , num[ 50 ] , eve , odd ;  
    cin >> Case ;  
    while( Case-- )  
    {  
        cin >> n ;  
        eve = odd = 0 ;  
        for( int i = 1 ; i <= n ; ++i )  
        {  
            cin >> num[ i ] ;  
            if( i % 2 == 0  )  
                eve += num[ i ] ;  
            else  
                odd += num[ i ] ;  
        }  
        if( n % 2 == 1  )  
            flag = 1 ;  
        else if( odd == eve || abs( odd - eve ) == 1 )  
            flag = 1 ;  
        else  
            flag = 0 ;  
        if( flag )  
            cout << "YES" << endl ;  
        else   
            cout << "NO" <
#include #include #include #include #include using namespace std; int main() { int Case , flag , n , num[ 50 ] , eve , odd ; cin >> Case ; while( Case-- ) { cin >> n ; eve = odd = 0 ; for( int i = 1 ; i <= n ; ++i ) { cin >> num[ i ] ; if( i % 2 == 0 ) eve += num[ i ] ; else odd += num[ i ] ; } if( n % 2 == 1 ) flag = 1 ; else if( odd == eve || abs( odd - eve ) == 1 ) flag = 1 ; else flag = 0 ; if( flag ) cout << "YES" << endl ; else cout << "NO" <