题目:
给定一个 n ∗ m 的矩阵 A,对其进行 q 次询问:以 (x1, y1) 为左上角,(x2, y2) 为右下角的子矩
阵中,所有元素的最大值。
输入:
第一行包含三个整数 n,m 和 q。
之后 n 行每行包含 m 个整数 Ai,j。
之后 q 行每行包含四个整数 x1,y1,x2 和 y2。
输出:
共 q 行包含一个整数 ans,表示子矩阵中所有元素的最大值。
样例输入:
3 3 2
1 2 3
1 2 3
2 3 1
1 1 2 2
2 2 3 3
样例输出:
2
3
思路:
拿样例来说,是
12
12
和
23
31
这两个矩阵,然后取max值
代码:
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,q,a[1000][1000],x1,x2,y1,y2,zd;
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=q;i++)//输出的次数
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
zd=max(x1,y1);//先在行和列中取
for(int i=x1;i<=x2;i++)//行
for(int j=y1;j<=y2;j++)//列
zd=max(zd,a[i][j]);//最大元素
printf("%d",zd);//输出
printf("\n");//换行
}
return 0;
}