查找矩阵中只有'0'元素的第一行的最佳方法?

An optimal way of finding the first row with only '0' elements in matrix?

本文关键字:方法 最佳 一行 元素 查找      更新时间:2023-10-16

我不会深究:我有一个编程任务的优化作业,我需要确认我的解决方案是正确的。

接下来的任务是:得到一个具有随机行数的矩阵,并且每行具有不同的长度。我们得到的矩阵中有哨兵:每行末尾都有一个-1值。矩阵的最后一行以-1值开头。矩阵的每隔一个值都是正整数和0。

任务是找到第一行,它只有0个元素(不包括sentinel),并将其写入-此外,我必须只使用2个变量、一个while循环和其中的一个条件。写出来可能会有条件。

总的来说,代码必须具有这样的通用形式(不包括矩阵的定义:

//'sor' means row, 'oszlop' means coloumn
int sor, oszlop;
while(){
if(){
}else{
};
}
if (){
cout <<"We couldn't find a row with only 0 elements."<<end; 
}else{                                      
cout <<"We could, and this is:"<<end;   
}

这是我的代码(只有main()内部的部分,也不包括矩阵的定义):

int sor=0, oszlop=0;                    
while (x[sor][oszlop]!=-1){             
if (x[sor][oszlop]==0){ 
++oszlop;           
}else{      
++sor;  
oszlop=0;           
}
}
if (oszlop==0){
cout <<"We couldn't find a row with only 0 elements."<<end; 
}else{                                      
cout <<"We could, and this is:"<<end;   
}

代码跳过无效的列,直到到达末尾;或者,如果它能到达任何行的末尾,它就会退出——但只有当它的所有元素都为0时,它才能退出。

在找到-1的情况下,它肯定会退出,但oszlop的值决定了我们是否找到了有效行,并且我们退出是因为到达了矩阵的末尾。

我用随机矩阵测试了它,但我仍然不确定,所以我需要你的确认。

我做得好吗?

您是否尝试在唯一有效行为最后一行的矩阵上测试它?例如,

[-1;
-1 0-1]

或者

[1-1;
-1 0-1]

如果每一行都必须有-1以外的元素。