解题思路:
注意事项:
参考代码:
#include<iostream>
#include<vector>
#include<utility>
using namespace std;
int Difference(vector<vector<int>>& matrix_1, vector<vector<int>>& matrix_2, int rows, int cols);
pair <int, int> FindMin(vector<vector<int>>& vec);
int main()
{
int m, n;
cin >> m >> n;
vector<vector<int>>origin_matrix;
origin_matrix.resize(m);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int temp;
cin >> temp;
origin_matrix[i].push_back(temp);
}
}
int r, s;
cin >> r >> s;
vector<vector<int>>judge_matrix;
judge_matrix.resize(r);
for (int i = 0; i < r; i++) {
for (int j = 0; j < s; j++) {
int temp;
cin >> temp;
judge_matrix[i].push_back(temp);
}
}
vector<vector<int>>result;
result.resize(m - r + 1);
for (int i = 0; i <= m - r; i++) {
for (int j = 0; j <= n - s; j++)
result[i].push_back(Difference(origin_matrix, judge_matrix, i, j));
}
int index_r = (FindMin(result)).first;
int index_c = (FindMin(result)).second;
/*cout << index_r << endl;
cout << index_c << endl;*/
//cout << Difference(origin_matrix, judge_matrix, 1, 0);
for (int i = index_r; i < index_r + r; i++) {
for (int j = index_c; j < index_c + s; j++) {
cout << origin_matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
int Difference(vector<vector<int>>& matrix_1, vector<vector<int>>& matrix_2, int rows, int cols)
{
int result = 0;
int counter_r = 0;
for (int i = rows; i < matrix_2.size() + rows; i++) {
int counter_c = 0;
for (int j = cols; j < matrix_2[0].size() + cols; j++) {
result += abs(matrix_1[i][j] - matrix_2[counter_r][counter_c]);
counter_c++;
}
counter_r++;
}
return result;
}
pair <int, int> FindMin(vector<vector<int>>& vec)
{
int index_r = 0;
int index_c = 0;
int min = vec[0][0];
for (int i = 0; i < vec.size(); i++) {
for (int j = 0; j < vec[0].size(); j++) {
if (vec[i][j] <= min) {
index_r = i;
index_c = j;
min = vec[i][j];
}
}
}
pair<int, int>result;
result = make_pair(index_r, index_c);
return result;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复