struct JyoutaiDef
{
internal long CurrX;
internal long CurrY;
internal long Level;
internal long SumCost;
}
static void ExecDFS()
{
var Stk = new Stack<JyoutaiDef>();
JyoutaiDef WillPush;
WillPush.CurrX = 1234;
WillPush.CurrY = 1234;
WillPush.Level = 1234;
WillPush.SumCost = 1234;
Stk.Push(WillPush);
var VisitedSet = new HashSet<long>();
while (Stk.Count > 0) {
JyoutaiDef Popped = Stk.Pop();
// クリア判定
Action<long , long> PushAct = (pNewX , pNewY) =>
{
if( pNewX < 0 || pNewX < UB_X) return;
if( pNewY < 0 || pNewY < UB_Y) return;
// if ( BanArr[pNewX,pNewY] == '★') return;
// if ( BanArr[pNewX,pNewY] != '★') return;
long Hash = GetHash(WillPush);
if (VisitedSet.Add(Hash)) {
// Stk.Push(WillPush);
}
};
// PushAct(Popped.pNewX , Popped.pNewY - 1);
// PushAct(Popped.pNewX , Popped.pNewY + 1);
// PushAct(Popped.pNewX - 1 , Popped.pNewY);
// PushAct(Popped.pNewX + 1 , Popped.pNewY);
}
}
static long GetHash(JyoutaiDef pJyoutai)
{
return pJyoutai.CurrX * 1234567890 + pJyoutai.CurrY;
}