careerCup1.7

// 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);
		
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值