HDOJ 2022《海選女主角》是一道經典的矩陣遍歷題目。劇情設定為導演 potato 老師為了生計進軍娛樂圈,舉辦女主角海選。m×n 位應聘者排成矩陣隊列,副導演 Fe(OH)₂ 為每人打分(32 位有符號整數,可能為負分)。選拔原則是:選取分數絕對值最大的應聘者;若有多位並列,取行號最小者,行號相同則取列號最小者。行列號從 1 開始計數。
輸入包含多組測試數據。每組第一行給出 m、n(行數、列數),隨後 m 行每行 n 個整數。對每組數據輸出三個整數:行號、列號、原始分數(非絕對值)。
輸入: 2 3 1 4 -3 -7 3 0 輸出: 2 1 -7
矩陣中絕對值最大為 |-7|=7,位於第 2 行第 1 列,原始分數 -7。
直接遍歷矩陣,維護當前最大絕對值及其位置。讀入每個分數 temp,若 |temp| > |max|,則更新 max、row、col。注意初始 max 應設為首個元素或極小值,但代碼中初始化 max=0 也可,因絕對值比較時負數絕對值大於 0 會被更新。遍歷順序按行優先,天然滿足「行號最小、列號最小」的優先級。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, m, maxVal, score, row, col, temp;
while (cin >> n >> m) {
maxVal = 0;
row = col = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> temp;
if (abs(temp) > abs(maxVal)) {
row = i + 1;
col = j + 1;
maxVal = temp;
}
}
}
cout << row << " " << col << " " << maxVal << endl;
}
return 0;
}
時間複雜度 O(m×n),空間複雜度 O(1)。題目數據範圍適中,暴力遍歷完全足夠。