解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论