以逆向螺旋形式列印一個給定的矩陣(C++)


在這個問題中,給定一個二維矩陣。我們的任務是以反向螺旋形式列印矩陣的所有元素。

我們舉一個例子來理解這個問題

Input:
   12 23 54 67
   76 90 01 51
   43 18 49 5
   31 91 75 9
Output: 18 49 1 90 76 43 31 91 75 9 5 51 67 54 23 12

我們將從矩陣中心開始並列印反向方向上的元素,取四個迴圈來列印反向方向上的元素。

示例

一個程式來展示我們解決方案的實現

線上演示

#include <iostream>
#define R 3
#define C 6
using namespace std;
void printReverseSpiral(int m, int n, int a[R][C]) {
   long int b[100];
   int i, k = 0, l = 0;
   int z = 0;
   int size = m*n;
   while (k < m && l < n) {
      int val;
      for (i = l; i < n; ++i){
         val = a[k][i];
         b[z] = val;
         ++z;
      }
      k++;
      for (i = k; i < m; ++i){
         val = a[i][n-1];
         b[z] = val;
         ++z;
      }
      n--;
      if ( k < m){
         for (i = n-1; i >= l; --i){
            val = a[m-1][i];
            b[z] = val;
            ++z;
         }
         m--;
      }
      if (l < n){
         for (i = m-1; i >= k; --i){
            val = a[i][l];
            b[z] = val;
            ++z;
         }
         l++;
      }
   }
   for (int i=size-1 ; i>=0 ; --i){
      cout<<b[i]<<" ";
   }
}
int main() {
   int mat[R][C] = {
      {34, 5, 6, 98, 12, 23},
      {9, 12, 56, 87, 99, 1},
      {13, 91, 50, 8, 21, 2}
   };
   cout<<"Printing reverse Spiral of the matrix :\n";
   printReverseSpiral(R, C, mat);
   return 0;
}

輸出

列印矩陣的反向螺旋 −

99 87 56 12 9 13 91 50 8 21 2 1 23 12 98 6 5 34

更新日期:27-01-2020

371 次瀏覽

開啟你的 職業生涯

透過完成此課程獲取認證

開始學習
廣告
© . All rights reserved.