⼆维数组—0-1矩阵(C语⾔)
题⽬:
查⼀个只包含0和1的矩阵中每⾏最长的连续1序列。
出每⼀⾏最长的连续1序列,输出其起始位置(从0开始计算)和结束位置(从0开始计算),如果这⼀⾏没有1则输出两个-1,然后换⾏。
对于连续的判断我⼀直不是很会做。。这次也让我好好地了解了⼀下。
代码如下:
怎么定义二维数组c语言#include<stdio.h>
int main(){
int i, j, m, n, a[100][100];
scanf("%d %d",&m,&n);
for(i =0; i < m; i++)//先输⼊矩阵
{
for(j =0; j < n; j++)
scanf("%d",&a[i][j]);
}
for(i =0; i < m; i++){
int count =0, max =0, location =0, sign =0;//注意这些初始化的位置
for(j =0; j < n; j++){
if(a[i][j]==1){
count++;
sign =1;//标记变量,有1就是sign = 1
if(j +1< n)//现在不是最后⼀个元素
{
if(a[i][j +1]==0&& count > max)//下⼀个为0,需⽐较是否为最长
{
max = count;
location = j;
count =0;//因为1的连续结束了,所以count重赋值为0
}
}else{//现在是最后⼀个元素
if(count > max)//需⽐较是否为最长
{
max = count;
location = j;
count =0;//因为1的连续结束了,所以count重赋值为0
}
}
}
}
if(sign){
printf("%d %d\n", location - max +1, location);
}else
puts("-1 -1");
}
return0;
}
欢迎交流探讨。
谢谢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论