C言語の問題です。 長さnの文字列を、m個のノードで構成されるグラフを探索し、 以下のルールで文字列を生成する時、生成される文字列のパターン数を求めてください。 (1 <= m, n <= 20) グラフのルール: 2個以上の複数のノードがある 各ノードは、a,b,c三つのアクションにより、他のノードに遷移する。 各ノードのa,b,cのアクションは、自分自身への遷移となる場合もある。 文字列生成のルール: スタートノードから始まり、n回アクションをたどりノードを遷移し、n回目にゴールノードにたどり着くようにする。 その際のアクションの履歴により文字列を生成する(例:abaabcbca) 1番目のノードがスタートノード、番号の最も大きなノードがゴールノード。 例えば、添付された画像ファイルのようなグラフが与えられ、n=4と指定された場合は、 a b a c a a a c a c a c a c b c 上記4つが生成されるので、解は4となります。 グラフ構造は、下記のようなフォーマットの配列で渡すように実装してください。 { 1(ノード番号), aのジャンプ先ノード番号, bのジャンプ先ノード番号, cのジャンプ先ノード番号, 2(ノード番号), aのジャンプ先ノード番号, bのジャンプ先ノード番号, cのジャンプ先ノード番号, ..... } 例(C言語): #include#include int graph1[16] = { 1, 2, 3, 3, 2, 2, 1, 4, 3, 3, 3, 3, 4, 1, 2, 2 }; int graph2[32] = { 1, 2, 3, 4, 2, 1, 5, 6, 3, 1, 5, 7, 4, 1, 6, 7, 5, 2, 3, 8, 6, 2, 4, 8, 7, 3, 4, 8, 8, 5, 6, 7 }; int graph3[16] = { 1, 2, 3, 3, 2, 2, 1, 2, 3, 3, 1, 3, 4, 1, 2, 2 }; //ここを実装する int solve(int graph[], int n, int m){ return 0; } int main(void){ printf("%d\n", solve(graph1, 4, 4)); //4 printf("%d\n", solve(graph2, 9, 8)); //4920 printf("%d\n", solve(graph3, 19, 4)); //0 return 0; }