面向答案C语言 2022-10-20 02:04 采纳率: 63.6%
浏览 25
已结题

请问:为何我这样声明二维数组的时候力扣会报错呢?力扣中国版 64. 最小路径和

int minPathSum(int** grid, int gridSize, int* gridColSize){
// int** record=malloc(sizeof(int*)*gridSize);
int record[gridSize][gridColSize[0]];
memset(record, -1, sizeof(record));
for(int row=0;row<gridSize;row++){
    for(int col=0;col<gridColSize[0];col++){
    if(row==0&&col==0){
    record[0][0]= grid[0][0];
    continue;
    }    
    int min=INT_MAX;
    if(row-1>=0){
        int upMin=record[row-1][col];
        min=fmin(min,upMin);
    }

    if(col-1>=0){
        int leftMin=record[row][col-1];
        min=fmin(min,leftMin);
    }
    record[row][col]=min+grid[row][col];
    }
}
return record[gridSize-1][gridColSize[0]-1];
}

为什么不能用malloc声明二维数组呢 是我哪里做错了么
将第三行的代码换成第二行(int** record=malloc(sizeof(int*)*gridSize);) 力扣就会报错

img


以上为报错内容 如果换成第三行的代码(int record[gridSize][gridColSize[0]];) 即可顺利通过

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-20 04:14
    关注

    你这malloc 只是申请了二维数组的行指针空间,每一行还需要再分配空间才行啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月28日
  • 已采纳回答 10月20日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看