#include <stdio.h>
char c[200][200];
int s[200], m, n;
void numara() {
int i,j, cod, nr;
for(j=0; j<n; j++) {
nr=0; cod=1;
for(i=0; i<m; i++) {
if(c[i][j]=='1') {
if(!cod) {cod=1;s[nr]++;nr=0;}
}
else {
if (cod) {nr=1;cod=0;}
else nr++;
}
}
if(!cod) s[nr]++;
}
}
int main() {
int i,j;
scanf("%d %d\n", &m, &n);
for(i= 0; i<m; i++) gets(c[i]);
numara();
for(i=1; i<=m; i++)
if(s[i]!= 0) printf("%d %d",i, s[i]);
return 0;
}
输入保证是正整数m和n以及一个m*n的01矩阵,且相邻元素之间没有空格。如
下例:
2 4
0101
1000
判断题
1) 若将第21行的“int i,j;”改为“int i;”,则程序会出现编译错误。()
2) 程序最少输出0个数,最多输出2*m个数。()
3) s[i]表示矩阵中有s[i]个列有i个0。( )
4) 若把第10行的“cod=1;”和第13行的“cod=0;”全部换成“cod^=1;”,则程序运行结果不变。( )
选择题
5) 若m=100,n=100,则s[1]的最大值是( )。
6) 若m=95,n=95,则s[5]的最大值是( )。