一マスずつ順に仮置きして、破綻なければ再帰的に次のマスへ、全てのマス埋まったら解。以下擬似コードです。 bt(k, w[wy*wx]){ if(k==wy*wx){out(w); return;}//見つけた if(w[k]){bt(k+1,w); retrun;}//マーカーマスはスルー for(m=1;m<N;m++){ w[k]=m; '経路仮置き if まだいける(w) bt(k+1,w);//次のマス } w[k]=0;//マス戻す } w[wy*wx]=初期配置; '0=空白,1..Nはマーカー bt(0,w);