十字爆破 题解
十字爆破
https://ac.nowcoder.com/acm/contest/5600/I
只需要用两个数组记录下每行和每列的和即可
然后用本行和+本列和-当前位置即可
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(); } }