消消乐


import java.util.Scanner;


publicclass Main {

int[][] map =newint[ 10 ][ 10 ];


publicstaticvoid main ( String [] args ) {

Main main = new Main () ;

main. init () ;

}


void init () {

buildMap() ;

// print();


Scanner scanner = new Scanner ( System .in) ;

while (scanner. hasNext ()) {

touch( scanner .nextInt()) ;

}

}


privatevoid touch (int tar ) {

int i, j;

if ( tar == 100 ) {

i = 9 ;

j = 9 ;

} elseif ( tar == 1 ) {

i = 0 ;

j = 0 ;

} else {

j = ( tar - 1 ) % 10 ;

i = ( tar - 1 ) / 10 ;

}


if (map[i][j] != - 1 ) {

touch (i, j) ;

}


zhegnli() ;

// printMap();

print() ;

}


privatevoid printMap () {

for ( int i = 0 ; i < 10 ; i++ ) {

StringBuffer sb = new StringBuffer () ;

for ( int j = 0 ; j < 10 ; j++ ) {

sb. append (map[i][j] + "  " ) ;

}

System . out .println( sb .toString()) ;

}

System . out .println() ;

}


privatevoid print () {

int red = 0 , green = 0 , blue = 0 , yellow = 0 , puple = 0 ;

for ( int i = 0 ; i < 10 ; i++ ) {

for ( int j = 0 ; j < 10 ; j++ ) {

int now = map[i][j] ;

if (now == 0 )

red++;

else if (now == 1 )

green++;

else if (now == 2 )

blue++;

else if (now == 3 )

yellow++;

else if (now == 4 )

puple++;

}

}


System .out. println (red + " " + green + " " + blue + " " + yellow + " " + puple) ;

}


privatevoid zhegnli () {

for ( int i = 0 ; i < 10 ; ) {

if (shuIsNull( i )) {

moveLeft( i ) ;

} else {

i++;

}

}


for ( int j = 0 ; j < 10 ; j++ ) {

int pos = 9 ;

for ( int i = 9 ; i >= 0 ; i-- ) {

if (map[i][j] != - 1 ) {

map[pos-- ][j] = map[i][j] ;

} else {

// System.out.println("change " + i + "," + pos);

}

}


for ( int i = pos; i >= 0 ; i-- ) {

map[i][j] = - 1 ;

}

}


}


privatevoid moveLeft (int pos ) {

for ( int i = pos + 1 ; i < 10 ; i++ ) {

for ( int j = 0 ; j < 10 ; j++ ) {

map[j][i - 1 ] = map[j][i] ;

map[j][i] = - 1 ;

}

}

}


privateboolean shuIsNull (int pos ) {

for ( int i = 0 ; i < 10 ; i++ ) {

if (map[i][ pos ] != - 1 )

returnfalse;

}

returntrue;

}


privatevoid touch (int i,int j ) {

// System.out.println("touch "+i+","+j);

deal ( i , j , map[ i ][ j ]) ;

}


privatevoid deal (int i,int j,int tar ) {

if ( in ( i , j ) && map[ i ][ j ] == tar ) {

map[ i ][ j ] = - 1 ;

deal ( i + 1 , j , tar ) ;

deal ( i - 1 , j , tar ) ;

deal ( i , j + 1 , tar ) ;

deal ( i , j - 1 , tar ) ;

}

}


privateboolean in (int i,int j ) {

if ( i >= 0 && i < 10 && j >= 0 && j < 10 )

returntrue;

else

returnfalse;

}


privatevoid buildMap () {

String [] strs = { "RED,RED,BLUE,BLUE,GREEN,YELLOW,BLUE,YELLOW,RED,PURPLE",

"GREEN,GREEN,GREEN,BLUE,RED,PURPLE,RED,YELLOW,YELLOW,BLUE",

"BLUE,RED,RED,YELLOW,YELLOW,PURPLE,BLUE,GREEN,GREEN,BLUE",

"YELLOW,RED,BLUE,YELLOW,BLUE,RED,PURPLE,GREEN,GREEN,RED",

"YELLOW,RED,BLUE,BLUE,PURPLE,GREEN,PURPLE,RED,YELLOW,BLUE",

"PURPLE,YELLOW,RED,RED,YELLOW,RED,PURPLE,YELLOW,RED,RED",

"YELLOW,YELLOW,GREEN,PURPLE,GREEN,RED,BLUE,YELLOW,BLUE,GREEN",

"RED,YELLOW,BLUE,BLUE,YELLOW,GREEN,PURPLE,RED,BLUE,GREEN",

"GREEN,GREEN,YELLOW,YELLOW,RED,RED,PURPLE,BLUE,BLUE,GREEN",

"PURPLE,BLUE,RED,RED,PURPLE,YELLOW,BLUE,RED,RED,GREEN" } ;


for ( int i = 0 ; i < 10 ; i++ ) {

String [] curs = strs[i] . split ( "," ) ;

for ( int j = 0 ; j < 10 ; j++ ) {

String str = curs[j] ;

int tar = - 1 ;

if (str. equals ( "RED" ))

tar = 0 ;

else if (str. equals ( "GREEN" ))

tar = 1 ;

else if (str. equals ( "BLUE" ))

tar = 2 ;

else if (str. equals ( "YELLOW" ))

tar = 3 ;

else if (str. equals ( "PURPLE" ))

tar = 4 ;


map[i][j] = tar;

}

}

}


}