矩阵归零

来源:互联网 发布:传奇霸业道士宝石数据 编辑:程序博客网 时间:2024/04/30 16:14

Problem Description

There is a matrix with m rows and n columns. An element of the matrix has at most four adjacent elments(up, down,left,right). You can add a same number to a pair of adjacent elements of the matrix. By doing this operation repeation repeatly, can you make the matrix zero?

Input

A line contains m and n indicating the rows and columns of the matrix. (0<m,n<5)
Each of the following m lines contains n integers(-10^6<=each integer<=10^6)
Input is terminated by one line contains two zeros.

Output

if the matrix can be converted into zero, ouput"Yes" on a line otherwise output "No" on a line.

Sample Input

2 21 11 02 20 01 10 0

Sample Output

NoYes
# include<cstdio># include<iostream># include<cstring>using namespace std;int a[20][20],n,m;int main(){    //freopen("a.txt","r",stdin);    while(cin>>m>>n&&n&&m)    {        int i,j;        memset(a,0,sizeof(a));        for(i=1;i<=m;i++)            for(j=1;j<=n;j++)            cin>>a[i][j];        for(i=1;i<=m;i++)        {            if(i%2!=0)            {                a[i][1]-=a[i-1][j];                for(j=2;j<=n;j++)    a[i][j]-=a[i][j-1];            }            else            {                a[i][n]-=a[i-1][n];                for(j=n;j>=2;j--)    a[i][j-1]-=a[i][j];            }        }        if((m%2&&a[m][n]==0)||(m%2==0&&a[m][1]==0))        {            cout<<"Yes"<<endl;            continue;        }        else    cout<<"No"<<endl;    }    return 0;}


0 0