首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDOJ 2022 海選女主角:絕對值最大分數查找問題解析

     編輯:C++ 入門

問題背景

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 會被更新。遍歷順序按行優先,天然滿足「行號最小、列號最小」的優先級。

參考代碼 (C++)

#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)。題目數據範圍適中,暴力遍歷完全足夠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved