| 
 
 
| 
x
快来注册~您需要 登录 才可以下载或查看,没有账号?注册账号  for (size_t i = _height - 1; i >= 0; i--)这段代码看起来没有什么问题,其实有一个大坑,是因为size_t是一种非负类型,它永远都不可能会小于0,所以循环停不下来。把size_t改成int就没问题了。
 
 复制代码#include"utils.h"
#include<iostream>
using namespace std;
void calMinDis()
{
bool **_map = NULL;
int **_min_dis;
int _height = 100;
int _width = 200;
_map = new bool*[_height];
for (size_t i = 0; i < _height; i++)
{
_map[i] = new bool[_width];
}
printf("cal min dis.\n");
if (_map == NULL)
{
printf("map haven't init.\n");
return;
}
_min_dis = new int *[_height];
for (size_t i = 0; i < _height; i++)
{
_min_dis[i] = new int[_width];
}
int MAX_INT = 0xffffffff >> 1;
for (size_t i = 0; i < _height; i++)
{
for (size_t j = 0; j < _width; j++)
{
if (_map[i][j])
{
_min_dis[i][j] = MAX_INT;
}
else
{
_min_dis[i][j] = 0;
}
}
}
for (size_t i = 0; i < _height; i++)
{
for (size_t j = 0; j < _width; j++)
{
if (!_map[i][j])
{
continue;
}
if (i > 0 && _min_dis[i - 1][j] < _min_dis[i][j])
{
_min_dis[i][j] = _min_dis[i - 1][j] + 1;
}
if (j > 0 && _min_dis[i][j - 1] < _min_dis[i][j])
{
_min_dis[i][j] = _min_dis[i][j - 1] + 1;
}
}
}
printf("1\n");
for (size_t i = _height - 1; i >= 0; i--)
{
for (size_t j = _width - 1; j >= 0; j--)
{
printf("(%d,%d)\n",i,j);
if (!_map[i][j])
{
continue;
}
if (i + 1 < _height && _min_dis[i + 1][j] < _min_dis[i][j])
{
_min_dis[i][j] = _min_dis[i + 1][j] + 1;
}
if (j + 1 < _width && _min_dis[i][j + 1] < _min_dis[i][j])
{
_min_dis[i][j] = _min_dis[i][j + 1] + 1;
}
}
}
printf("finished cal min dis.\n");
}
int main(int argc, char const *argv[])
{
calMinDis();
return 0;
}
 
 | 
 
免责声明:资源盒论坛发布的一切资源、模型和注册信息及软件的源码教程仅限用于学习和研究目的;
 不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
 本站资源来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
 如果您喜欢该程序/源文件,请支持正版软件,购买/注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
 若本站侵犯了您的权益请联系站长进行删除处理E-mail:190183740@qq.com;
 |