题目
第一行T,代表即将输入T个矩阵
第二行开始就是T个矩阵,矩阵前有它们的行数和列数m和n
随后跟着m行矩阵内容,每一行都是n个数字
比如
2
4 4
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
1 2
0 1
T=2,
思路
java中用ArrayList来保存数组,是没办法转成静态数组arr的,所以需要想办法解决
原来ACM格式的输入,一旦遇到很多个数组 ,那需要单独拿函数处理一个矩阵,在主函数中循环T次读取,每次读取一个矩阵,立马处理然后打印输出结果,下一次调用函数时,arr临时变量会被覆盖,故不会造成大量淤积,也不必把动态数组转化为静态数组,因为静态数组中的多个数组长短根本就不一样,无法转化。
代码
public static class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int T = in.nextInt();
while (T != 0){
process();
T--;//每次读取一个数组,循环处理T个即可,每个数组的处理方式一样
}
}
public static void process(){
//针对一个数组,如何处理,打印输出,不用等所有数组全部输入
Scanner in = new Scanner(System.in);
int[] mn = new int[2];
for (int i = 0; i < 2; i++) {
//读取行列,其是1x2数组
mn[i] = in.nextInt();
}
int m = mn[0];//行列
int n = mn[1];
//m行数组
int[][] arr = new int[m][n];//真正建立数组
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = in.nextInt();
}
}
}
}