我正试图找出这个问题。我有一个带整数值的矩阵。目标是得到它,以便每行总和和每列总和是非负的。我唯一能做的就是改变整行或整列的符号。
这是我尝试过的。我找一个带负数的行或列,然后翻转它。这适用于我尝试的所有示例,但现在我必须解释原因,而且我不确定。有时当我这样做时,负数的数量会增加,比如当我翻转一行时,有时后来会有更多不好的列。但我找不到一个不起作用的例子,我不知道怎么回事。
答案 0 :(得分:9)
使用负和翻转行或列是正确的,并且总是会导致所有行和列都具有非负(不一定是正数 - 考虑全0的矩阵)总和的情况。
问题在于您不应该跟踪需要翻转的行数或列数,而是要记录所有条目的总和。设A为矩阵,并将a作为所有条目的总和。当您使用sum -s(s为正)翻转行或列时,则会将a添加2。由于a限制在上面,最终这个过程必须终止。
答案 1 :(得分:0)
假设你有一行整数,a,b,c ......等等。
如果a + b + c + ... = n,则翻转所有符号
( - a)+( - b)+( - c)+( - )... = - (a + b + c + ...)= -n
如果n为负数,则-n为正数,因此您只需翻转所有符号即可使行为正。这至少是你的方法背后的数学。
这是你要找的吗?