消消乐 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; } } } }
点赞 6
牛客网
牛客企业服务