バイナリ行列とは、コンピュータ プログラミング用語では、0 と 1 で構成される行と列のグリッドを指します。プログラミングの面接やコンテストで遭遇するコーディング上の課題の 1 つは、バイナリ マトリックスの出口ポイントを決定することです。この記事では、C を使用してこの問題を解決するさまざまな方法を説明します。
###文法###
アルゴリズムを詳しく説明する前に、これから示すコード例に頻繁に現れる構文をよく理解しておくとよいでしょう。
リーリー
###アルゴリズム###
ここで、バイナリ行列の出口点を見つけるための段階的なアルゴリズムの概要を説明しましょう -
現在のセル位置を (0, 0) に初期化します。
現在のセルから開始して行列を走査します。
現在のセルが 1 の場合、右、下、左、上の優先順位に従って次のセルに移動します。
現在のセルが 0 の場合、ループを終了し、現在のセルの位置を終了点として返します。
出口ポイントが見つかるか、すべてのセルを訪問するまで、手順 3 と 4 を繰り返します。
-
方法 1
最初にお勧めするアプローチは、while ループと条件ステートメントを実装してアルゴリズムを実行することです。以下は、そのような実装がどのようなものかを示す例です -
###例###
リーリー
###出力###
リーリー
方法 2
セルの移動を処理するために、2 番目の方法では do while ループと switch ステートメントを組み合わせて使用します。参考までに、そのような実装がどのようなものかを示す例を次に示します。 -
###例###
リーリー
###出力###
リーリー
説明
の中国語訳は次のとおりです:
説明
関数 `findExitPoint` は、提供されたコードで設計されています。その目的は、バイナリ行列を入力として受け入れ、出口点の座標に対応する整数のペアを出力することです。この関数は、行列を走査して出口点を見つけるために説明されたアルゴリズムに従います。
両方の実装手法を使用して行列を走査するときに現在のセルの位置を追跡するために、変数 `x` と `y` を利用します。次に、ループを使用して、優先順位 (右、下、左、上) に従って行列を移動します。
while ループを使用して各セルの値を確認し、if-else ステートメントを使用します。現在のセルが 1 であると仮定すると、指定された方向の次のセルに移動します。現在のセルが 0 の場合、ループから抜け出し、現在のセルの位置を終了点として返します。
方法 2 では、do-while ループと switch ステートメントを使用してセルの移動を処理します。ナビゲーション プロセスを効率的にするために、特定の現在のセル値に対応する方向への移動を具体的にターゲットとする条件ベースの実行パスを採用します。基本的に、値 1 を持つ現在のセルが処理されると、x および y 座標値に必要な変更に対応するためにすぐに調整されます。現在のセルが 0 であると仮定すると、ループから抜け出します。
`main` 関数では、バイナリ行列を初期化し、`findExitPoint` 関数を呼び出して出口点の座標を取得します。最後に、`cout` を使用して出口点の座標を出力します。
###結論は###
よく遭遇するプログラミング タスクは、バイナリ行列の出口点を見つけることであり、このタスクはさまざまな解決策を提案します。この記事では、この障害を克服するために C コードで実装された 2 つの異なる方法について詳しく説明します。これらのアルゴリズムをうまく適用すると、バイナリ行列の終了位置、または終了位置を指すポイントを効率的に決定できます。希望するコーディング スタイルの設定と最終目標に合った戦略を選択することを忘れないでください。
以上がC++ を使用してバイナリ行列の出口点を変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。