-1

そのような機能を整理するのを手伝ってくれる人はいますか(クロスワードプログラムで管理する宿題として):

1)文字列の配列(一種のテキストファイル)があります。

row[0] = "str1" row[1] = "str2"や。。など。

2) 各弦の長さは同じ

3) stdin like から入力された単語abcd

斜めabcdに配置されたテキスト内の単語を検索する必要があります(左から右は、アルゴリズムの種類が必要なだけで問題ではありません)。見つかった単語をゼロに置き換えます。最初の文字を見つけることができますが、どのように正しく進めてテキストをゼロに置き換えますか? 誰でも手がかりを教えてもらえますか?strchr

解決:

ちなみにマイナスのTnx。各対角線が1つの単純な線に生成される別のソリューションを見つけたので、それを適用strstrして一致の位置を見つけます。一致の位置と一致した文字列の長さを知ることで、行の配列内の一致したセルの位置を正確に検出できます。

私はそのようなコードを使用しました(おそらくsmnはそれが役立つと思うでしょう):

  /* generating left-right diagonal string str */
  for( col = cols - len; col >= 0; col --, i = 0 ){
  /* where len is the length of searching string */

  while( ( col+i ) < cols && i < rows ){
    *(str + i) = res[i][col+i];
    i ++;
  }

  *(str + i) = '\0';

  //some match seq.
  }

左上のセル (最初の文字列の開始) から最後の上のセル (最初の文字列の終了) まで、左右斜めに行いました。次に、左の列についても同じ手順を実行すると、結果のアルゴリズムですべての文字列がカバーされます。

4

2 に答える 2

2

おそらく、次のような2次元の文字配列が必要です。

char grid[i][j]

そして、あなたの最初の文字がgrid[i][j]対角線の次の点よりもある場合は

grid[i+1][j+1]

+1などとのすべての組み合わせについて-1

于 2012-11-21T18:47:42.763 に答える
1

最初の文字を見つけます。たとえば、行[5]でインデックス7(so row[5][7])の文字を検索します。次にrow[6][8]、が2番目の文字であるかどうかを確認します。またはrow[4][6]row[4][8]またはrow[6][6]。おそらく繰り返し、3番目の文字で続行します。

于 2012-11-21T18:48:09.200 に答える