• ベストアンサー

C言語でアナグラムを求めるプログラム

C言語初心者で、勉強中です。 今アナグラムを求めるプログラムをC言語で作成しています。 内容はあらかじめある英単語が書いてあるテキストファイルから互いにアナグラムとなっている英単語をすべて求めてそれを出力するというプログラムです。 どこから手をつけていいかわからず悩んでいます。 そこでヒントをいただこうと思って質問しました。 どなたか回答よろしくお願いします。

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8529/18254)
回答No.2

じゃ,私が作るとした時の方針を書きましょう。 (1)テキストファイルから単語をすべて読む。 (2)各単語の文字を分解して,辞書順に整列させた文字列に変換する。 (3)変換された文字列を順にみて,ひとつ前の文字列と同じものがあれば,出力する。 (4)変換された文字列が尽きればおしまい。

natsu1989
質問者

補足

なるほど、単語単語を辞書順に変換すればいいのですね。 それで全部英字とその個数が合致したら出力する、ということでしょうか?

その他の回答 (3)

回答No.4

順列ですよね。勉強でしたら http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Permutation.html ソースでしたら http://www5.airnet.ne.jp/tomy/cpro/pe1.htm ではないでしょうか。

回答No.3

#1です。 > ソート関数を使って文字数でソートして一文字ずつ比較すればよいのでしょうか? 文字数でソートではないです。 単語の文字をソートです。wordならdorwになります。qsortでできます。 文字数が違ってたら直ぐ除外できます。strlen 一文字ずつ比較しなくても標準関数でstrstrやstrcmpがあります。 結局言ってることは#2さんと同じです。

回答No.1

とりあえず、文字数で弾いといて、 次にソートして比較したらよいのでは? 標準関数なら strlen, qsort, strstr 辺りを使うかな。

natsu1989
質問者

補足

ソート関数を使って文字数でソートして一文字ずつ比較すればよいのでしょうか? クイックソートならば作ったことありますのでがんばってみようと思います。ありがとうございます。

関連するQ&A

専門家に質問してみよう