そのような機能を整理するのを手伝ってくれる人はいますか(クロスワードプログラムで管理する宿題として):
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.
}
左上のセル (最初の文字列の開始) から最後の上のセル (最初の文字列の終了) まで、左右斜めに行いました。次に、左の列についても同じ手順を実行すると、結果のアルゴリズムですべての文字列がカバーされます。