代码:
- #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;
- }
"小礼物走一走,来肥宅自学平台支持我"
评论区
共条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~
首页上页1下页尾页