最長しりとり

唐突に、ポケモンの名前でしりとりしたら、どれだけ長く続くだろうと思いつきました。ルールは、

  • 最後の1文字が頭文字と全く同じである場合にのみ続けられる
    • 長音や「ん」は終わり。
    • 拗音や促音も(使ってもいいルールもあるが)めんどうなのでなし。
  • 一度使った名前は二度と使ってはいけない

というもの。この問題はつなげていい名前と名前の間に距離1の有向路があるとしたグラフの最長路を求める問題になるので、当然NP困難になってしまいます。
で、Javaで全探索を書いてみたところ、
151匹(赤・緑・青・ピカチュウ)では一瞬で答えの22匹

ニョロモモンジャラ→ラッタ→タマタマ→マダツボミミニリュウウツボットトサキントトランセルルージュララフレシアアーボッククサイハナナゾノクサ→サンド→ドガース→スリープ→プテララプラス→ストライク→クラブ→ブーバー

が出ましたが、251匹(金、銀、パール)では、五時間半走らせて40匹

エンテイイーブイイシツブテテッポウオオニスズメメガニウムムウママグマラシシャワーズズバットトランセルルージュラ→ラッタ→タマタマ→マダツボミミルタンククロバットトゲチッククサイハナナゾノクサ→サンド→ドードリオオドシシシードララフレシアアリアドス→スリープ→プテララプラス→ストライク→クヌギダママリルリリングママグマッググランブル→ルギア→アズマオウウツボットトサキントトゲピー

という結果でした(ただし同数解は他にあるかもしれない)。というかベイリーフは図鑑で二匹目なので全部探索するのはかなり無理。ググってみると整数計画法を使う方法があるらしいです(が、面倒なのでやらない)。
ちなみになんでこんなこと思いついたのかというと、ポケモンっていま全部で何匹いるのかなと思ってWikipediaを引いてみたからです。