# ZeroJudge e798. p5. 卷積神經網路 <br> > [題目 : e798. p5. 卷積神經網路](https://zerojudge.tw/ShowProblem?problemid=e798) <br> ## 題目描述 :+1: 卷積神經網絡 (CNN) 是一種深度學習模型,主要應用於影像識別。CNN 一般分為三個部分:卷積層、池化層和全連接層。池化層中的最大池化法 (max pooling) 是常見的方法,將輸入的影像劃分為若干個 2×2 的矩形子區域,對每個子區域輸出最大值。 給定一個 n×n 的二維陣列,實作最大池化演算法並輸出池化後的結果。 * 最大池化法示意圖 *  > 圖片來源:https://embarc.org/embarc_mli/doc/build/html/MLI_kernels/pooling_max.html <br> ## 輸入說明 :+1: 第一行有一個正整數 n(4<=n<= 20,n 為 2 的倍數),代表輸入影像邊長。接下去有 n 行, 每行各有 n 個數字,數值範圍[-2^31, 2^31) {原題不明確,這明定為int範圍},以空白隔開,代表影像陣列中的資料值。 <br> ## 輸出說明 :+1: 輸出經 2x2 最大池化後的結果。 <br> ## 解題思路 :+1: 1. **讀取輸入**:首先讀取二維陣列的大小為 n 的元素。 2. **實作最大池化**:將輸入矩陣分成 2x2 的子區域,計算每個子區域中的最大值。 3. **輸出結果**:每次計算出最大值後印出答案。 <br> ## 程式碼 :+1: ```cpp= #include <iostream> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; int matrix[20][20]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> matrix[i][j]; } } for (int i = 0; i < n; i += 2) { for (int j = 0; j < n; j += 2) { int a = matrix[i][j]; int b = matrix[i][j + 1]; int c = matrix[i + 1][j]; int d = matrix[i + 1][j + 1]; cout << max({a, b, c, d}) << ' '; } cout << endl; } return 0; } ``` ## 成果截圖 :+1: *  <br> ## 心得 :+1: * 第一次寫解題報告,希望可以幫助到人~~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up