求助 零件问题,放Oj上就会报错
代码放OJ上就会出现错误有一种工业零件,分成左右两半,它们的形状由’X’和空格表示的二维图形表示,比如:左半的零件形状如下:
XXXXX
XXX
XXXX
XXX
右半的零件的形状如下
XXX
XXXX
XXXX
XXXXX
所有的左半边的零件的左边第一列都是X,所有右半的零件的右边第一列都是X。
把这样的左右两个零件紧密地拼在一起,则可能存在空洞。零件本身也可能有空洞,但不会存在断裂的零件,每个空洞为一个空格,要求你写一个程序求出空洞的大小(空格的数目)。
输入:
第一行是一个整数K,表示有多少个测试用例,以后每一个测试用例占2n+1行。每个测试用例的第一行为一个整数n,(1<=n<=20),从第2行到n+1行为左半零件的二维图形,从第n+2行到2n+1行为右半零件。左半零件左对齐,最长一行不超过25列,
右半零件右对齐,最长一行不超过25列
输出:
每行输出一个测试用例的结果。
Sample Input
2
4
XXXXX
XXX
XXXX
XXX
XXX
XXXX
XXXX
XXXXX
2
XXXXX
X
XXXXX
XXX
Sample Output
1
6
我的代码是
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
while (num-- != 0) {
int n =Integer.parseInt(scanner.nextLine());
String str = "";
int numberOfX = 0;
int[] arrNumberOfX1 = new int[n];
for (int i = 0; i < n; i++) {
str = scanner.nextLine();
numberOfX = str.trim().length();
arrNumberOfX1[i] = numberOfX;
}
int[] arrNumberOfX2 = new int[n];
for (int i = 0; i < n; i++) {
str = scanner.nextLine();
numberOfX = str.trim().length();
arrNumberOfX2[i] = numberOfX;
}
int[] arrNumberOfX = new int[n];
int sumOfX = 0;
int maxNumberOfX = 0;
for (int i = 0; i < n; i++) {
arrNumberOfX[i] = arrNumberOfX1[i] + arrNumberOfX2[i];
if (arrNumberOfX[i] > maxNumberOfX) {
maxNumberOfX = arrNumberOfX[i];
}
sumOfX += arrNumberOfX[i];
}
int result = maxNumberOfX * n - sumOfX;
System.out.println(result);
}
}
}