0

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

下一个任务是:你得到一个有随机行数的矩阵,每行有不同的长度。我们得到的矩阵中有标记:每行末尾都有一个 -1 值。矩阵的最后一行以 -1 值开始。矩阵的每隔一个值都是正整数和 0。

任务是找到第一行,它只有 0 个元素(不包括哨兵,并写下它 - 另外,我必须只使用 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决定了我们是否找到了有效的行,或者我们不能,并且我们因为到达矩阵的末尾而退出。

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

我把任务做好了吗?

4

1 回答 1

0

您是否尝试在唯一有效行是最后一行的矩阵上对其进行测试?比如说,

[-1;
-1 0 -1]

也许

[1 -1;
-1 0 -1]

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

于 2014-03-03T00:01:05.180 回答