給定一個 n×n
的整數矩陣,其中 n
為偶數且介於4到20之間。你的任務是對這個矩陣進行 2x2
的平均池化操作。題目本人
矩陣是一種數學的數據結構,用於表示數據的二維排列。在這題中,矩陣是由整數構成,並且具有 n×n
的規模。
平均池化是深度學習中常見的一種降維技術,特別是在處理影像數據時。它的基本思想是取一個區塊(例如2x2的區域)內所有元素的平均值。這樣做可以減少數據的空間尺寸,同時保留重要的特徵。在本題中,每個2x2的子矩陣代表一個處理單元。
在輸出時保留兩位小數是一種常見的數據呈現方式,可以讓結果更加精確且易於閱讀。在C++中,我們使用 printf("%.2f ",avg);
來實現,而在Python中,我們使用字符串格式化 f"{avg:.2f}"
來實現。
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<vector<int>> matrix(n, vector<int>(n));
// 讀取矩陣
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) {
double avg = (matrix[i][j] + matrix[i][j+1] + matrix[i+1][j] + matrix[i+1][j+1]) / 4.0;
printf("%.2f ",avg);
}
printf("\n");
}
return 0;
}
import sys # 導入sys模組以使用stdin
input = sys.stdin.read # 從標準輸入讀取所有輸入資料
data = input().split() # 將輸入資料以空白分割成列表
n = int(data[0]) # 讀取矩陣的大小n
matrix = [[int(data[i*n+j+1]) for j in range(n)] for i in range(n)] # 使用列表解析式讀取矩陣數據並轉換為整數
for i in range(0, n, 2): # 外層迴圈以步長2遍歷行,進行平均池化
for j in range(0, n, 2): # 內層迴圈以步長2遍歷列
avg = (matrix[i][j] + matrix[i][j+1] + matrix[i+1][j] + matrix[i+1][j+1]) / 4.0 # 計算4個元素的平均值
print(f"{avg:.2f} ", end='') # 格式化輸出平均值,保留兩位小數
print() # 每完成一行的輸出後換行
n = int(input()) # 矩陣的大小
matrix = [] # 初始化矩陣
# 讀取矩陣的每一行
for i in range(n):
row = input().split()
matrix.append([int(num) for num in row])
for i in range(0, n, 2): # 外層迴圈以步長2遍歷行,進行平均池化
for j in range(0, n, 2): # 內層迴圈以步長2遍歷列
avg = (matrix[i][j] + matrix[i][j+1] + matrix[i+1][j] + matrix[i+1][j+1]) / 4.0 # 計算4個元素的平均值
print(f"{avg:.2f} ", end='') # 格式化輸出平均值,保留兩位小數
print() # 每完成一行的輸出後換行
計算根據給定的每日溫度記錄,找出有多少天是「溫暖日」。「溫暖日」的定義如下,如果該天的溫度高於"此日以前"所有日子溫度的平均值。給定一正整數 n 代表總天數,給定 n 個整數代表連續 n 天的溫度記錄。計算出有多少天是「溫暖日」。#一次可能給出多筆測資
Apr 26, 2025打開seedlab後,開啟terminal
May 16, 2024給定一個 n×n 的整數矩陣,其中 n 為偶數且介於4到20之間。你的任務是對這個矩陣進行 2x2 的平均池化操作。
Apr 25, 2024在C++中,我們可以使用vector來創建二維陣列。二維陣列可以被視為"陣列的陣列",這讓我們可以存儲表格形式的數據。
Apr 3, 2024or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up