肥宅自学平台_人人成为技术开发者

肥宅人只等待您,联系我们吧,曾经的巅峰是否能回来?我们正在用心服务!

C++中size_t循环的遇到的坑让人猝不及防

 更新时间:2023-09-27 07:46:45   作者:肥宅-季波   我要评论(0)  

         代码:
  1. #include"utils.h"
  2. #include<iostream>
  3. using namespace std;
  4. void calMinDis()
  5. {
  6.     bool **_map = NULL;
  7.     int **_min_dis;
  8.     int _height = 100;
  9.     int _width = 200;
  10.     _map = new bool*[_height];
  11.     for (size_t i = 0; i < _height; i++)
  12.     {
  13.         _map[i] = new bool[_width];
  14.     }
  15.     printf("cal min dis.\n");
  16.     if (_map == NULL)
  17.     {
  18.         printf("map haven't init.\n");
  19.         return;
  20.     }
  21.     _min_dis = new int *[_height];
  22.     for (size_t i = 0; i < _height; i++)
  23.     {
  24.         _min_dis[i] = new int[_width];
  25.     }
  26.     int MAX_INT = 0xffffffff >> 1;
  27.     for (size_t i = 0; i < _height; i++)
  28.     {
  29.         for (size_t j = 0; j < _width; j++)
  30.         {
  31.             if (_map[i][j])
  32.             {
  33.                 _min_dis[i][j] = MAX_INT;
  34.             }
  35.             else
  36.             {
  37.                 _min_dis[i][j] = 0;
  38.             }
  39.         }
  40.     }
  41.     for (size_t i = 0; i < _height; i++)
  42.     {
  43.         for (size_t j = 0; j < _width; j++)
  44.         {
  45.             if (!_map[i][j])
  46.             {
  47.                 continue;
  48.             }
  49.             if (i > 0 && _min_dis[i - 1][j] < _min_dis[i][j])
  50.             {
  51.                 _min_dis[i][j] = _min_dis[i - 1][j] + 1;
  52.             }
  53.             if (j > 0 && _min_dis[i][j - 1] < _min_dis[i][j])
  54.             {
  55.                 _min_dis[i][j] = _min_dis[i][j - 1] + 1;
  56.             }
  57.         }
  58.     }
  59.     printf("1\n");
  60.     for (size_t i = _height - 1; i >= 0; i--)
  61.     {
  62.         for (size_t j = _width - 1; j >= 0; j--)
  63.         {
  64.             printf("(%d,%d)\n",i,j);
  65.             if (!_map[i][j])
  66.             {
  67.                 continue;
  68.             }
  69.             if (i + 1 < _height && _min_dis[i + 1][j] < _min_dis[i][j])
  70.             {
  71.                 _min_dis[i][j] = _min_dis[i + 1][j] + 1;
  72.             }
  73.             if (j + 1 < _width && _min_dis[i][j + 1] < _min_dis[i][j])
  74.             {
  75.                 _min_dis[i][j] = _min_dis[i][j + 1] + 1;
  76.             }
  77.         }
  78.     }
  79.     printf("finished cal min dis.\n");
  80. }
  81. int main(int argc, char const *argv[])
  82. {
  83.     calMinDis();
  84.     return 0;
  85. }
"小礼物走一走,来肥宅自学平台支持我"
评论区

评论

共条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
客服中心在线客服
全心全意为平台用户服务
Copyright © 2017-2023 自学平台网站地图:去查看>
  • 肥宅人自己的自学平台
  • 人人都能成为平台讲师
  • 贡献你的力量壮大肥宅自学平台
  • 将自己的能力变现
  • 实现人生的第二职业
网址收藏平台安卓APP
微信公众号微信公众号

本站部分图片或者资源来自程序自动采集或卖家(商家)发布,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

肥宅自学教程网是一个主打IT视频教程、自媒体运行、摄影剪辑等内容的资源学习交流平台。