Matrix Row Sum Queries
題目說明
本題目要求實作一個矩陣處理程式。程式首先讀取兩個正整數 m 與 n,代表一個維度為 m x n 的整數矩陣(m 個 Row,n 個 Col)。接著,程式會依序讀取該矩陣的所有元素(由左至右、由上至下)。
在矩陣資料輸入完成後,程式會讀取一個正整數 k,代表後續的查詢次數。接著輸入 k 個整數 q_1, q_2, ..., q_k,每個整數代表一個 Row 的索引(Index),範圍在 0 到 m - 1 之間。
你的任務是完成樣板程式碼中缺少的兩個核心函數:
calculateRowSum:計算並傳回指定 Row 索引的所有元素總和。
processQueries:依序處理 k 個查詢,呼叫 calculateRowSum 取得結果並將其輸出。
請務必使用以下提供的樣板程式碼進行開發,僅能修改指定函數內部的實作與函數的簽章(Signature,如回傳型態與參數列表),嚴禁修改 main 函數或其他結構,否則不予計分。
樣板程式碼:
import java.util.Scanner;
public class MatrixProcessor {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int[][] matrix = new int[m][n];
for (int i = 0; i < m; i = i + 1) {
for (int j = 0; j < n; j = j + 1) {
matrix[i][j] = sc.nextInt();
}
}
int k = sc.nextInt();
int[] queries = new int[k];
for (int i = 0; i < k; i = i + 1) {
queries[i] = sc.nextInt();
}
processQueries(matrix, queries, k);
}
// 依序針對每個查詢呼叫 calculateRowSum 取得結果然後輸出該次查詢的結果
public static ... processQueries(...) {
...
}
// 計算指定列的總和
public static ... calculateRowSum(...) {
...
}
}
輸入值的格式
第一行包含兩個正整數 m 與 n (1 <= m, n <= 100),以空格分隔。
接下來有 m 行(或是連續輸入 m x n 個整數),每行包含 n 個整數,代表矩陣元素。每個元素的值在 -10000 到 10000 之間。
接下來一行包含一個正整數 k (1 <= k <= 100),代表查詢次數。
最後一行包含 k 個整數 q_i (0 <= q_i < m),代表查詢的 Row 索引,以空格分隔。
輸出值的格式
輸出共有 k 行。每行輸出一個整數,代表對應查詢的 Row 總和。
各種需要注意的邊界條件
矩陣維度最小情況:當 m = 1 且 n = 1 時,矩陣只有一個元素。
矩陣維度單一化:只有一個 Row (1 x n) 或只有一個 Col (m x 1) 的情況。
查詢重複性:同一個 Row 指數可能會被多次查詢,程式應能正確重複輸出。
數值範圍:矩陣元素可能包含 0 或負數。
Row 索引邊界:查詢可能針對第 0 個 Row 或最後一個 Row (m - 1)。
測試資料(1)-輸入
2 3
1 2 3
4 5 6
2
0
1
測試資料(1)-輸出
6
15
測試資料(2)-輸入
1 1
99
1
0
測試資料(2)-輸出
99
測試資料(2)-解釋與特性
邊界條件:1 x 1 最小矩陣。只有一個 Row(索引 0),總和即為該元素本身。
Comments