只需要用两个数组记录下每行和每列的和即可
然后用本行和+本列和-当前位置即可
import java.util.*;
import java.math.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
public class Main {
public static void main(String args[])throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int n = (int)in.nval;
in.nextToken();
int m = (int)in.nval;
long num[][] = new long[n][m];
long jieguo[][] = new long[n][m];
long heng[] = new long[n];
long shu[] = new long[m];
for(int i=0;i<n;i++)
for(int k=0;k<m;k++)
{
in.nextToken();
num[i][k] = (int)in.nval;
heng[i]+=num[i][k];
shu[k]+=num[i][k];
}
for(int i=0;i<n;i++)
for(int k=0;k<m;k++)
{
jieguo[i][k] = heng[i]+shu[k]-num[i][k];
}
for(int i=0;i<n;i++)
{
for(int k=0;k<m;k++)
{
out.print(jieguo[i][k]+" ");
}
out.println();
}
out.flush();
}
} 
京公网安备 11010502036488号