04:最匹配的矩阵
- 总时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
-
给定一个m*n的矩阵A和r*s的矩阵B,其中0 < r ≤ m, 0 < s ≤ n,A、B所有元素值都是小于100的正整数。求A中一个大小为r*s的子矩阵C,使得B和C的对应元素差值的绝对值之和最小,这时称C为最匹配的矩阵。如果有多个子矩阵同时满足条件,选择子矩阵左上角元素行号小者,行号相同时,选择列号小者。
输入 - 第一行是m和n,以一个空格分开。 之后m行每行有n个整数,表示A矩阵中的各行,数与数之间以一个空格分开。 第m+2行为r和s,以一个空格分开。 之后r行每行有s个整数,表示B矩阵中的各行,数与数之间以一个空格分开。 (1 ≤ m ≤ 100,1 ≤ n ≤ 100) 输出
- 输出矩阵C,一共r行,每行s个整数,整数之间以一个空格分开。 样例输入
-
3 33 4 55 3 48 2 42 27 34 9
样例输出 -
4 5 3 4 把每种情况记录下来排一遍序就好了 没什么技巧。233 附代码
#include
#include #include #include #include #include using namespace std;struct node{ int han,lie,he;}e[10001];bool cmp(node x,node y){ if(x.he!=y.he) return x.he >m>>n; for(i=1;i<=m;i++) { for(j=1;j<=n;++j) cin>>za[i][j]; } cin>>r>>s; for(i=1;i<=r;++i) { for(j=1;j<=s;++j) cin>>zb[i][j]; } wk(); sort(e,e+tot,cmp); for(i=e[0].han;i