矩阵归零

来源:互联网 发布:mac系统怎么看配置 编辑:程序博客网 时间:2024/04/30 21:45
Description:给定一个矩阵,任何一个元素最多有四个相邻元素(上、下、左、右)。你可以对任何一对相邻元素做加同一个数(可为负数)的操作。经过若干次操作之后,能否将矩阵置0呢?Input:若干矩阵数据。 每个矩阵数据以一行开头,该行中有两个整数M、N(0<M,N<100),表示矩阵的行列。如果M、N任何一个为0,则输入数据结束。 在矩阵数据一行开头之后,是M行N列整数,构成一个矩阵。每个矩阵元素K,满足-10^6<K<10^6。Output:每个矩阵输出一行结果:如果矩阵可以按规则操作,转变到0矩阵,则输出Yes,否则输出No。Sample Input:2 21 11 02 20 01 11 0Sample Output:NoYes//标程:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int a[110][110];int main(){    int n, m, i, j;    while(cin >> n >> m)    {        memset(a,0,sizeof(a));        if(n + m == 0) break;        for(i = 1; i <= n; ++ i)            for(j = 1; j <= m; ++ j)                cin >> a[i][j];        for(i = 1; i <= n; ++ i)        {            if(i%2==1)            {                for(j = 2; j <= m; ++ j)                    a[i][j] -=a[i][j-1];                a[i+1][m] -= a[i][m];            }            else            {                for(j = m-1; j > 0; -- j)                    a[i][j] -= a[i][j+1];                a[i+1][1] -= a[i][1];            }        }        if(n%2 == 1)        {            if(a[n][m] == 0)   cout << "Yes" << endl;            else cout << "No" << endl;        }        else        {            if(a[n][1] == 0)                cout << "Yes" << endl;            else cout << "No" << endl;        }    }    return 0;}

0 0
原创粉丝点击