You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言求二维数组分块最大值并生成2x2结果数组的代码修改方法

二维数组分块取最大值实现方案

需求说明

将二维数组按指定大小划分为互不重叠的区域,提取每个区域的最大值作为该区域的代表值,最终生成由各区域最大值组成的新数组。示例如下:

原始4×4数组:

12 14 | 32 9
19 24 | 3 4
----------------
11 26 | 3 8
13 24 | 7 5

按2×2尺寸分块后取最大值,输出结果为:

24 32
26 8

修改思路

  • 补充原代码中缺失的数组尺寸常量N的定义
  • 每个分块遍历前先初始化当前分块的最大值变量
  • 遍历分块内元素时逐一比对更新最大值
  • 分块遍历完成后将最大值存入结果数组的对应位置

完整实现代码

#include <stdio.h>
#define N 4 // 定义原始二维数组的行列数

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 res_size = N / quadrant_size;
    int res[res_size][res_size]; // 存储最终结果的数组

    // 遍历所有分块
    for(int x = 0 ; x < N ; x += quadrant_size){
        for(int y = 0 ; y < N ; y += quadrant_size){
            int max_val = disp[x][y]; // 初始化当前分块最大值
            // 遍历分块内所有元素
            for(int i = x ; i < x + quadrant_size ; i++){
                for(int j = y ; j < y + quadrant_size ; j++){
                    if(disp[i][j] > max_val){
                        max_val = disp[i][j];
                    }
                }
            }
            // 将当前分块最大值存入结果数组
            res[x / quadrant_size][y / quadrant_size] = max_val;
        }
    }

    // 输出结果数组
    for(int i = 0; i < res_size; i++){
        for(int j = 0; j < res_size; j++){
            printf("%d ", res[i][j]);
        }
        printf("\n");
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者user13839242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:15:02