数字矩阵
数字矩阵
我们可以把给矩阵相邻元素都乘-1记为⼀次操作,我们发现对任意⼀元素,先和它左边相邻元素操作,再和它下边相邻元素操作。它⾃⼰正负不变,⽽左边和下边元素改变。
这样我们推⼴下去,矩阵任意两个元素都可进⾏⼀次操作。
所以我们统计负号的数量:
如果是偶数,则矩阵所有数都可为正。
如果是奇数,则把矩阵中绝对值最⼩的数变作负数。
代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int sum,cnt,Min;
int main()
{
int t;
cin >> t;
while (t--)
正则化一个五行五列的随机矩阵{
int n,m;
cin >> n >> m;
sum = 0;cnt = 0;Min = 101;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < m; j ++ )
{
int x;
cin >> x;
if (x < 0) cnt ++;
if (abs(x) < Min)
{
Min = abs(x);
}
sum += abs(x);
}
//cout <<"sum:" <<sum << endl;
//cout << Min << endl;
if (cnt % 2 == 0)
cout << sum << endl;
else
cout << sum - 2*Min << endl;
}
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。