図のようにx,yの方向へ、上、斜め、右方向に進めます。戻ることは出来ません。
この(0,0)からx,yまでの全ての経路を知りたいのですが、なかなか思うように結果が出ません・・。
例えば(0,0)から(2,2)までの経路であった場合
経路1
(0,0) -> (1,0) -> (2,0) -> (2,1) -> (2,2)
経路2
(0,0) -> (1,0) -> (1,1) -> (2,2)
とかこういう感じで全通り出したいのですが・・。
再帰関数を使って若干作ってみたもののうまくいきません・・。
一応こんな感じです。
#include <stdio.h> #include <string.h> int len_a=2,len_b=2; void serch(int ia,int ib){ int i; printf("(%d,%d)\n",ia,ib); for(i=0;i<3;i++){ if(i==0 && ia<len_a) ia++; else if(i==1 && ia<len_a && ib<len_b) ia++ , ib++; else if(i==2 && ib<len_b) ib++; else continue; serch(ia,ib); } } int main(){ serch(0,0); return 0; }
すみませんが、おわかりになるかたご指導よろしくお願いします。