首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ACM 經典題:二維陣列尋找絕對值最大元素及其座標

     編輯:程式設計綜合問答

題目要求:給定 m x n 矩陣,找出絕對值最大的元素,輸出其行號、列號(從 1 起算)與原始值。若有多個相同絕對值,取行號最小者,行號相同則取列號最小者。

核心邏輯

  1. 讀入 m, n 直到 EOF。
  2. 遍歷矩陣,維護 maxAbs、bestRow、bestCol、bestVal。
  3. 比較時使用 Math.abs()(或 C 的 labs()),若絕對值更大則更新;相等時依序比較行、列。

AC 參考程式碼

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int m, n;
    while (cin >> m >> n) {
        int bestRow = 1, bestCol = 1;
        long bestVal = 0;
        long maxAbs = -1;
        for (int i = 1; i <= m; ++i) {
            for (int j = 1; j <= n; ++j) {
                long x; cin >> x;
                long absX = labs(x);
                if (absX > maxAbs) {
                    maxAbs = absX;
                    bestVal = x;
                    bestRow = i;
                    bestCol = j;
                }
            }
        }
        cout << bestRow << ' ' << bestCol << ' ' << bestVal << endl;
    }
    return 0;
}

易錯點提醒

  • 陣列大小需略大於題目上限(如 105x105),避免越界。
  • 初始 maxAbs = -1 確保第一個元素必定更新。
  • 輸出原始值(含正負號),非絕對值。

此題考驗基本輸入處理、絕對值比較與座標記錄,是二維陣列操作的入門經典。

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