题目描述
设某汉字由N X N的0和1的点阵图案组成,如下图。我们依照以下规则生成压缩码。连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从上到下,由左到右。第一个数表示连续有几个0,第二个数表示接下来连续有几个1,第三个数再接下来连续有几个0,第四个数接着连续几个1,以此类推。。。
例如: 以下汉字点阵图案:
0001000
0001000
0001111
0001000
0001000
0001000
1111111
对应的压缩码是: 7 3 1 6 1 6 4 3 1 6 1 6 1 3 7 (第一个数是N ,其余各位表示交替表示0和1 的个数,压缩码保证 N X N= 交替的各位数之和)
输入格式
汉字点阵图(点阵符号之间不留空格)。(3<= N<= 200)
输出格式
一行,压缩码。
输入输出样例
输入
0001000
0001000
0001111
0001000
0001000
0001000
1111111
输出
7 3 1 6 1 6 4 3 1 6 1 6 1 3 7
import java. util. *;
public class P1320 {
private static boolean bool;
public static void main ( String[ ] args) {
f ( ) ;
}
public static void f ( ) {
Scanner sc = new Scanner ( System. in) ;
int sum = 0 ;
String string = sc. next ( ) . trim ( ) ;
int len = string. length ( ) ;
System. out. print ( len) ;
for ( int i = 0 ; i < len; i++ ) {
if ( string. charAt ( i) == '0' && ! bool || string. charAt ( i) == '1' && bool) {
sum++ ;
} else {
System. out. print ( " " + sum) ;
sum = 1 ;
bool = ! bool;
}
}
for ( int i = 0 ; i < len - 1 ; i++ ) {
string = sc. next ( ) . trim ( ) ;
for ( int j = 0 ; j < len; j++ ) {
if ( string. charAt ( j) == '0' && ! bool || string. charAt ( j) == '1' && bool) {
sum++ ;
} else {
System. out. print ( " " + sum) ;
sum = 1 ;
bool = ! bool;
}
}
}
System. out. print ( " " + sum) ;
}
}