SRM498 Div2 Hard(950) NinePuzzle
通常の正方形のパズルと異なり任意の配置が可能なので、並びを気にせずにinitをgoalに塗り替えるのに必要な回数を求めれば良い。
#include <string> #include <algorithm> using namespace std; class NinePuzzle{public: int getMinimumCost( string init, string goal ) { return ( abs(count(init.begin(),init.end(),'R')-count(goal.begin(),goal.end(),'R')) + abs(count(init.begin(),init.end(),'G')-count(goal.begin(),goal.end(),'G')) + abs(count(init.begin(),init.end(),'B')-count(goal.begin(),goal.end(),'B')) + abs(count(init.begin(),init.end(),'Y')-count(goal.begin(),goal.end(),'Y')) ) / 2; }};