// Write an algorithm such that if an element in an MxN matrix is 0, its entire row and
// column is set to 0
//相乘,如果该row或者该column为0,则set该row或column为0
#include "iostream"
#define M 5
#define N 5
using namespace std;
void setZero(int matrix[M][N])
{
int row[M]={0};
int column[N]={0};
//利用乘法,找出含0的行,并记录
for(int i=0;i<M;i++)
{
int j=0;
int temp=1;
while(j<N)
{
temp*=matrix[i][j];
if(temp==0)
{
row[i]=1;
break;
}
j++;
}
}
//利用乘法,找出含0的列,并记录
for(int i2=0;i2<N;i2++)
{
int j=0;
int temp=1;
while(j<M)
{
temp*=matrix[j][i2];
if(temp==0)
{
column[i2]=1;
break;
}
j++;
}
}
//将含0的行列set zero
for(int k=0;k<M;k++)
{
if(row[k]==1)
{
int kj=0;
while(kj<N)
{
matrix[k][kj]=0;
kj++;
}
}
}
for(int l=0;l<N;l++)
{
if(column[l]==1)
{
int li=0;
while(li<M)
{
matrix[li][l]=0;
li++;
}
}
}
}
void printMatrix(int matrix[M][N])
{ for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
void main()
{
int matrix[M][N]={{0,2,3,4,5},{4,5,6,7,8},{0,8,9,78,0},{4,5,6,7,8},{4,5,6,7,8}};//1
printMatrix(matrix);
setZero(matrix);
printMatrix(matrix);
}
careerCup1.7
最新推荐文章于 2017-12-01 17:28:00 发布