编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行和列清零。
解答:用两个辅助数组分别存放元素为0的矩阵的行数和列数,然后再将这些行和列清零。
void Reset(int *a,int m,int n)
{
int i,j;
bool *col=new bool[m];
for(i=0;i<m;i++)
col[i]=false;
bool *row=new bool[n];
for(i=0;i<n;i++)
row[i]=false;
cout<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i*n+j]==0)
{
col[i]=true;
row[j]=true;
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(col[i]||row[j])
a[i*n+j]=0;
}注意:不能在遍历矩阵时,将元素为0的行和列清零,否则,会变成零矩阵。
本文介绍了一种高效的算法,用于处理M*N矩阵中元素为0的情况,通过将这些元素所在的行和列全部置零来实现特定操作。该算法首先使用两个辅助数组记录需要清零的行和列,随后进行统一修改。

581

被折叠的 条评论
为什么被折叠?



