移動可能、待機不可能な地点ってどのように計算したらいいんですかね?

移動範囲の計算が、再帰関数で現在地から4方向を探査し、
MAP大の配列にその地点の残り移動力を記入していくやり方で

移動経路計算が移動先地点から移動元地点まで残り移動力が大きい場所を探査するやり方なのですが。

ようは味方を通り抜けられるようにしたいのですが、
MAP大の配列に敵味方の位置を書き込んで
移動範囲・経路計算時にいちいち参照するくらいしか思いつかないのですが
ほかにいい方法はあるでしょうか?