C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定された行列をC++でジグザグ形式で印刷します


この問題では、2次元の行列が与えられます。私たちの仕事は、マトリックスのジグザグ形式を印刷することです。

問題を理解するために例を見てみましょう

Input:
   12 99 43
   10 82 50
   15 75 5
Output: 12 99 43 50 82 10 15 75 5

この問題を解決するために、配列の要素を両方向(LtoRとRtoL)に出力します。そして、フラグ変数を使用して方向を変更します。

#include <iostream>
using namespace std;
void printZigZagPattern(int row, int col, int a[][5]) {
   int evenRow = 0;
   int oddRow = 1;
   while (evenRow<ow) {
      for (int i=0;i<col;i++) {
         cout<<a[evenRow][i]<<" ";
      }
      evenRow = evenRow + 2;
      if(oddRow < row) {
         for (int i=col-1; i>=0; i--)
            cout<<a[oddRow][i] <<" ";
      }
      oddRow = oddRow + 2;
   }
}
int main() {
   int r = 3, c = 3;
   int mat[][5] = {
      {12,99,43},
      {10,82,50},
      {15,75,5}
   };
   cout<<"Elements of the matrix in ZigZag manner :\n";
   printZigZagPattern(r , c , mat);
   return 0;
}

出力

ジグザグ方式の行列の要素-

12 99 43 50 82 10 15 75 5

  1. C++のスパイラルマトリックスIII

    R行とC列の2次元グリッドがあるとすると、東向きの(r0、c0)から開始します。ここで、グリッドの北西の角は最初の行と列にあり、グリッドの南東の角は最後の行と列にあります。このグリッドのすべての位置を訪問するために、時計回りのスパイラル形状で歩きます。グリッドの境界の外側にいるときは、グリッドの外側を歩き続けます(ただし、後でグリッドの境界に戻る場合があります)。グリッドの位置を表す座標のリストを、訪問した順序で見つける必要があります。したがって、グリッドが-のような場合 次に、矢印がパスになります。 これを解決するには、次の手順に従います- dirrを作成:=[[0,1]、[

  2. 与えられた行列をC++で反時計回りのスパイラル形式で印刷します

    この問題では、2次元の行列が与えられます。そして、私たちのタスクは、から反時計回りのスパイラルで行列の要素を印刷することです。 反時計回りのスパイラルフォーム −これは、左上から始まり、反時計回りに最初の右下から左上に向かって進むスパイラルトラバーサルです。 反時計回りのトラバーサルは159 13 14 15 16 12 8 4 3 2 6 10117になります。 問題を理解するために例を見てみましょう Input:    2 4 6    1 7 9    5 0 3 Output: 2 1 5 0 3 9 7 この問