获取最大数组并将其转换为 C 中的 2x2 数组

Getting the max array and converting it into 2x2 array in C

我正在尝试将二维数组划分为多个区域,并通过获取其中的最大值从每个区域中获得一个代表。

例如:

12 14 | 329
19 24 | 3 4
11 26 | 3 8
13 24 | 7 5

进入:

24 32
26 8

如何修改代码获取每个区域的最大值?

int main() {
    int disp[4][4] = {{12,14,32,9},
                     {19,24,3,4},
                     {11,26,3,8},
                     {13,24,7,5}};

    int quadrant_size=2;

    for(int x=0 ; x<N ; x+=quadrant_size){
        for(int y=0 ; y<N ; y+=quadrant_size){
            for(int i=x ; i<x+quadrant_size ; i++){
                for(int j=y ; j<y+quadrant_size ; j++){
                    printf("%d ",disp[i][j]);
                }
                printf("\n");
            }
            printf("\n");
        }
    }
}

事实上,您几乎做到了:只需创建一个 mx 变量来查找该区域中的最大元素。

int main() { 
    int disp[4][4] = {{12,14,32,9}, 
                     {19,24,3,4},
                     {11,26,3,8},
                     {13,24,7,5}};
    int quadrant_size=2;
    int N = 4;

    for(int x=0 ; x<N ; x+=quadrant_size){
      for(int y=0 ; y<N ; y+=quadrant_size){
        int mx = dist[x][y];
        for(int i=x ; i<x+quadrant_size ; i++){
            for(int j=y ; j<y+quadrant_size ; j++){
                if (disp[i][j] > mx) {
                    mx = disp[i][j];
                }
            } 
        } 
        printf("%d ", mx); 
      }
      printf("\n");
    }
}