#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #define SIZE2 10000 #define SIZE 500 int main() { int n, m,temp,i,j; int x1, x2, y1, y2, k; int store[SIZE][SIZE]; scanf("%d%d", &n, &m); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &temp); store[i][j] = temp; } } while (m != 0) { scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &k); printf("%d",calculate(store, x1, y1, x2, y2, k)); m--; } return 0; } int print(int** store) { int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { printf("%d ", *(store+i*SIZE+j)); } } } int calculate(int*store,int x1,int y1,int x2,int y2,int k) { int i, j,temp; int* num = (int*)malloc(sizeof(int) * SIZE2); for (i = 0; i < SIZE2; i++) { num[i] = 0; } for (i = x1 - 1; i < x2; i++) { for (j = y1 - 1; j < y2; j++) { temp = (int)(*(store + i * SIZE + j)); num[temp]++; } } for (i = 0; i < SIZE2; i++) { if (num[i] != 0) { k -= num[i]; } if (k <= 0) { return i; } } }
时间: 2023-06-25 17:06:56 浏览: 415
这是一个 C 语言程序,它的功能是根据输入的矩阵和查询条件,计算出满足条件的第 k 个最小的数值。
程序主要包括三个函数:
1. `main` 函数:主函数,负责输入数据和输出结果。
2. `print` 函数:用于打印矩阵,但是该函数没有被调用,可能是开发者未完全实现该函数。
3. `calculate` 函数:计算满足条件的第 k 个最小的数值。
该函数接受五个参数:存储矩阵的指针 `store`、查询区域左上角和右下角的坐标 `(x1, y1)` 和 `(x2, y2)`,以及查询第 k 个最小数值。
该函数首先创建了一个数组 `num` 来统计每个数值出现的次数,然后遍历查询区域,统计每个数值出现的次数,最后再遍历 `num` 数组,找到满足条件的第 k 个最小的数值。
阅读全文