题目描述
宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。
游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上的所有糖果都可以拿走,不能走障碍物的格子,只能上下左右走。
请问妈妈在最短到达宝宝位置的时间内最多拿到多少糖果(优先考虑最短时间到达的情况下尽可能多拿糖果)
输入
第一行输入为N(N <= 50),N标识二维矩阵的大小 之后N行,每行有N个值,表格矩阵每个位置的值
其中:
-3:妈妈
-2:宝宝
-1:障碍
>=0:糖果数(0表示没有糖果,但是可以走)
输出
输出妈妈在最短到达宝宝位置的时间内最多拿到多少糖果,行末无多余空格
#include <stdio.h>
#include <map>
#include <vector>
#include <iostream>
#include <string>
using namespace std;
class GamePoint
{
public:
unsigned int m_uiPointX;
unsigned int m_uiPointY;
bool m_bEnable;
unsigned int m_uiGameCandyNum;
GamePoint* m_pGamePointParent;
GamePoint(unsigned int x, unsigned int y,bool bEnable,unsigned int uiCandyNum)
:m_uiPointX(x),m_uiPointY(y),m_bEnable(bEnable),m_uiGameCandyNum(uiCandyNum),m_pGamePo