题解
2026-05-27 20:44:53
发布于:湖南
17阅读
0回复
0点赞
题意
给定一个 n 行 m 列的整数矩阵,执行 q 次查询。每次查询给出子矩阵的左上角 (x,y) 和右下角 (c,d),要求按矩阵格式逆序输出这个子矩阵:
1.行逆序:从子矩阵最后一行往第一行输出
2.列逆序:每行内部从最后一列往第一列输出
思路
1.数据存储:定义一个足够大的二维数组 a[1010][1010] 存储矩阵(满足题目 1≤n,m≤1000 的限制),数组下标从 1 开始,和题目坐标直接对应,不用转换。
2.输入矩阵:先读入行数 n、列数 m,再双层循环依次读取矩阵所有元素。
3.处理查询:
读取查询次数 t,循环处理每一次查询;
读取本次查询的坐标 x,y,c,d;
外层循环逆序遍历行:从子矩阵最后一行 c 开始,递减到第一行 x;
内层循环逆序遍历列:从子矩阵最后一列 d 开始,递减到第一列 y;
逐行输出元素,每行输出完后换行,满足矩阵格式要求。
完整代码
#include <bits/stdc++.h>
using namespace std;
int a [1010][1010], t;
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
int x, c, d, y;
cin >> t;
while(t--) {
cin >> x >> y >> c >> d;
for(int i = c; i >= x; i--) {
for(int j = d; j >= y; j--) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
return 0;
}

这里空空如也








有帮助,赞一个