如图,查找一个只包含01的矩阵中每列最长的连续1序列,输入说明输出说明样例如图
//for example
int main() {
int m,n,s,e,*v,i,j,(*p)[2];
scanf(“%d%d”, &m, &n);
p=((int*)[2])malloc(sizeof(int[2])*m);//保存每行的查找结果
v=(int*)malloc(sizeof(int)*n);//保存每行输入信息
for(i=0;i<m;i++) {//按行循环
s=e=p[i][0]=p[i][1]=-1;//初始化
for(j=0;j<n;j++)
scanf”%d”, &v[j]);//接收每行输入数据
for(j=0;j<n;j++) {//按列循环
if(v[j]==1 && s==-1) s=e=j; //初次次遇到1,记录位置
else if (v[j]==1) e++;//初次以外遇到1,累加结束位置
if (v[j]!=1 || j==n-1) {//遇到1以外或者最后一列
if(e-s>p[i][1]-p[i][0] || p[i][0]==-1) {//判断找到的位置是否大于保存的结果,大于则交换,并初始化位置
p[i][0]=s;
p[i][1]=e;
s=e=-1;
}
}
}
}
for(i=0;i<m;i++) //打印结果
printf(“%d,%d\n”, p[i][0], p[i][1]);
free(p); //释放内存
free(v);
return 0;
}