• 面试常考题 max pool实现


    题目

    二维矩阵(nm) 求每个(lw)的子矩阵的最大元素, 就是一维滑动窗口的升级版

    自己瞎掰的题解

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 1e3;
    int n, m;
    // l 代表长 w 代表宽
    int l, w;
    
    int s[N][N];
    int dp[N][N];
    
    // 相当于每行的我用单调队列做一遍 去取区间最大值
    void init(int row, int *t) {
        deque<int> que;
        for(int i=0; i<m; i++) {
            if(que.empty())
                que.push_back(i);
            else {
                while(!que.empty() && i - que.front() >= l)
                    que.pop_front();
                while(!que.empty() && t[i] > t[que.back()])
                    que.pop_back();
                que.push_back(i);
            }
            dp[row][i] = t[que.front()];
        }
        return ;
    }
    
    void solve() {
        memset(dp, 0, sizeof(dp));
        for(int i=0; i<n; i++) {
            init(i, s[i]);
        }
        // 然后我竖着做一遍
        for(int i=w-1; i<n; i++) {
            for(int j=l-1; j<m; j++) {
                int mx = 0;
                for(int k=i-w+1; k<=i; k++) {
                    mx = max(dp[k][j], mx);
                }
                cout<< mx <<" ";
            }
            cout << endl;
        }
    
    }
    
    int main()
    {
        freopen("data.txt", "r", stdin);
        cin >> n >> m >> l >> w;
        for(int i=0; i<n; i++) {
            for(int j=0; j<m; j++) {
                scanf("%d", &s[i][j]);
            }
        }
        solve();
        return 0;
    }
    
  • 相关阅读:
    python+selenium框架
    django--form组件
    python +selenium上传文件
    python--UI---登录---验证码
    python+selenium button定位方法
    css-定位技术
    css-盒子模型
    css-元素分类
    序列化
    FileUploadController
  • 原文地址:https://www.cnblogs.com/Draymonder/p/11521960.html
Copyright © 2020-2023  润新知