#include <iostream>
#include <windows.h>
#include <fstream>

#define N 64

using namespace std;

bool isPeak(int grid[][N], int r, int c);

int main() {
    int nrows, ncols;
    int map[N][N];
    string filename;
    ifstream file;

    cout << "请输入文件名:\n";
    cin >> filename;
    file.open(filename.c_str());
    if (file.fail()) {
        cout << "打开输入文件出错.\n";
        exit(1);
    }

    file >> nrows >> ncols;

    if (nrows > N || ncols > N) {
        cout << "网格太大,调整程序.\n";
        exit(1);
    }

    //从数据文件读数据到数组
    for (int i = 0; i < nrows; i++) {
        for (int j = 0; j < ncols; j++) {
            file >> map[i][j];
        }
    }

    //判断并打印峰值位置
    for (int i = 1; i < nrows - 1; i++) {
        for (int j = 1; j < ncols - 1; j++) {
            if (isPeak(map, i, j)) {
                cout << "峰值出现在行:" << i << "列:" << j << endl;
            }
        }
    }

    //关闭文件
    file.close();

    //结束程序
    return 0;
}

bool isPeak(int grid[][N], int i, int j) {
    if ((grid[i - 1][j] < grid[i][j]) &&
        (grid[i + 1][j] < grid[i][j]) &&
        (grid[i][j - 1] < grid[i][j]) &&
        (grid[i][j + 1] < grid[i][j]))
        return true;
    else
        return false;
}

posted on 2022-08-31 20:20  wshidaboss  阅读(32)  评论(0编辑  收藏  举报