# 找出矩陣中第二大的數字
#include <iostream> | |
#include <vector> | |
#include <climits> // 包含 INT_MIN 的定義 | |
using namespace std; | |
int findSecondLargest(const vector<vector<int>>& matrix) { | |
int largest = INT_MIN; // 最大數字 | |
int secondLargest = INT_MIN; // 第二大數字 | |
// 遍歷矩陣,找出最大數字和第二大數字 | |
for (const auto& row : matrix) { | |
for (int num : row) { | |
if (num > largest) { | |
secondLargest = largest; | |
largest = num; | |
} else if (num > secondLargest && num < largest) { | |
secondLargest = num; | |
} | |
} | |
} | |
return secondLargest; | |
} | |
int main() { | |
// 定義矩陣 | |
vector<vector<int>> matrix = { | |
{4, 5, 6}, | |
{7, 10, 9}, | |
{2, 8, 3} | |
}; | |
// 呼叫函式找出第二大的數字 | |
int secondLargest = findSecondLargest(matrix); | |
// 輸出結果 | |
if (secondLargest != INT_MIN) { | |
cout << "矩陣中第二大的數字為: " << secondLargest << endl; | |
} else { | |
cout << "矩陣中沒有第二大的數字" << endl; | |
} | |
return 0; | |
} |
# 轉置矩陣
#include <iostream> | |
using namespace std; | |
const int MAX_SIZE = 100; // 定義矩陣的最大大小 | |
void transposeMatrix(int matrix[][MAX_SIZE], int rows, int cols) { | |
int transposedMatrix[MAX_SIZE][MAX_SIZE]; // 用於儲存轉置後的矩陣 | |
// 轉置矩陣 | |
for (int i = 0; i < rows; i++) { | |
for (int j = 0; j < cols; j++) { | |
transposedMatrix[j][i] = matrix[i][j]; | |
} | |
} | |
// 列印轉置後的矩陣 | |
cout << "轉置矩陣:" << endl; | |
for (int i = 0; i < cols; i++) { | |
for (int j = 0; j < rows; j++) { | |
cout << transposedMatrix[i][j] << " "; | |
} | |
cout << endl; | |
} | |
} | |
int main() { | |
int matrix[MAX_SIZE][MAX_SIZE]; // 定義原始矩陣 | |
int rows, cols; // 矩陣的行數和列數 | |
// 輸入矩陣的行數和列數 | |
cout << "請輸入矩陣的行數:"; | |
cin >> rows; | |
cout << "請輸入矩陣的列數:"; | |
cin >> cols; | |
// 輸入矩陣元素 | |
cout << "請輸入矩陣的元素:" << endl; | |
for (int i = 0; i < rows; i++) { | |
for (int j = 0; j < cols; j++) { | |
cin >> matrix[i][j]; | |
} | |
} | |
// 計算並列印轉置矩陣 | |
transposeMatrix(matrix, rows, cols); | |
return 0; | |
} |
# 兩個矩陣相乘
#include <iostream> | |
#include <vector> | |
using namespace std; | |
// 函式:矩陣相乘 | |
vector<vector<int>> matrixMultiply(const vector<vector<int>>& matrix1, const vector<vector<int>>& matrix2) { | |
int rows1 = matrix1.size(); // 矩陣 1 的列數 | |
int cols1 = matrix1[0].size(); // 矩陣 1 的行數(矩陣 2 的列數) | |
int rows2 = matrix2.size(); // 矩陣 2 的列數 | |
int cols2 = matrix2[0].size(); // 矩陣 2 的行數 | |
// 檢查矩陣是否可以相乘 | |
if (cols1 != rows2) { | |
cout << "矩陣的尺寸不符合乘法規則" << endl; | |
return vector<vector<int>>(); | |
} | |
// 建立結果矩陣,初始化為全 0 | |
vector<vector<int>> result(rows1, vector<int>(cols2, 0)); | |
// 進行矩陣相乘運算 | |
for (int i = 0; i < rows1; i++) { | |
for (int j = 0; j < cols2; j++) { | |
for (int k = 0; k < cols1; k++) { | |
result[i][j] += matrix1[i][k] * matrix2[k][j]; | |
} | |
} | |
} | |
return result; | |
} | |
int main() { | |
// 定義兩個矩陣 | |
vector<vector<int>> matrix1 = <!--swig0-->; | |
vector<vector<int>> matrix2 = <!--swig1-->; | |
// 呼叫矩陣相乘函式 | |
vector<vector<int>> result = matrixMultiply(matrix1, matrix2); | |
// 輸出結果矩陣 | |
cout << "矩陣相乘的結果:" << endl; | |
for (const auto& row : result) { | |
for (const auto& element : row) { | |
cout << element << " "; | |
} | |
cout << endl; | |
} | |
return 0; | |
} |
# 矩陣乘向量
#include <iostream> | |
#include <vector> | |
using namespace std; | |
// 計算矩陣與向量的乘積 | |
vector<double> matrixVectorMultiply(const vector<vector<double>>& matrix, const vector<double>& vector) { | |
int rows = matrix.size(); | |
int cols = matrix[0].size(); | |
// 檢查矩陣與向量的尺寸是否符合乘法規則 | |
if (cols != vector.size()) { | |
cout << "矩陣與向量的尺寸不符合乘法規則" << endl; | |
return vector<double>(); | |
} | |
// 創建結果向量,初始化為零 | |
vector<double> result(rows, 0.0); | |
// 進行矩陣與向量的乘法 | |
for (int i = 0; i < rows; i++) { | |
for (int j = 0; j < cols; j++) { | |
result[i] += matrix[i][j] * vector[j]; | |
} | |
} | |
return result; | |
} | |
// 測試程式碼 | |
int main() { | |
// 定義矩陣 | |
vector<vector<double>> matrix = <!--swig2-->; | |
// 定義向量 | |
vector<double> vector = {1, 2, 3}; | |
// 計算矩陣與向量的乘積 | |
vector<double> result = matrixVectorMultiply(matrix, vector); | |
// 輸出結果 | |
cout << "乘積結果:"; | |
for (double value : result) { | |
cout << value << " "; | |
} | |
cout << endl; | |
return 0; | |
} |