1

再帰を使用して、ポイントAからポイントBに到達するための一意の北東パスne(x、y)の総数を出力することになっています。ここで、BはAの北にx行、東にy列です。可能な一意のNEパスを印刷する必要があります。

再帰を使用して一意のパスの総数を取得する方法を知っています。ただし、再帰を使用してすべてのNEパスを正しく出力することに固執しています。

これはいくつかのテストケースの与えられた出力です: 出力の画像

私の欠陥のある再帰コード

とにかく、これが私の欠陥のある再帰コードのスクリーンショットです。どこが間違っていたのかアドバイスをください。私はこれに多くの時間を費やしてきましたが、それでも解決策に到達することはできません。

4

1 に答える 1

2
  1. ポイントBに到達した場合なので、if(rows == 0 && cols == 0)を出力する必要があると思います。
  2. なぜ最初のne呼び出しでpath+= "N"を使用しているのですか?これにより、元のパスに「N」が追加され、2回目の呼び出しでpath + "N"+"E"が取得されます。

次のことを試してください。

public static int ne( int rows, int cols, String path )
{
   if( rows == 0 && cols == 0 )
   {
      System.out.println(path);
      return 1;
   }
   int npats = 0, wpaths = 0;
   if( rows != 0 )
      npaths = ne( rows-1, cols, path+"N" );
   if( cols != 0 )
      wpaths = ne( rows, cols-1, path+"E" );
   return npaths + wpaths;
}
于 2013-03-14T18:05:30.397 に答える