📜  将矩阵旋转 45 度的 C++ 程序

📅  最后修改于: 2022-05-13 01:55:45.526000             🧑  作者: Mango

将矩阵旋转 45 度的 C++ 程序

给定一个大小为N*N的矩阵mat[][] ,任务是将矩阵旋转45 度并打印矩阵。

例子:

方法:按照以下步骤解决问题:

  1. 使用计数器变量将对角线元素存储在列表中。
  2. 打印使输出看起来像所需模式所需的空格数。
  3. 反转列表后打印列表元素。
  4. 仅遍历对角元素以优化操作所花费的时间。

下面是上述方法的实现:

C++
// C++ program for the above approach 
#include 
using namespace std;
  
// Function to rotate matrix by 45 degree
void matrix(int n, int m, vector> li)
{
      
    // Counter Variable 
    int ctr = 0;
      
    while (ctr < 2 * n - 1)
    {
        for(int i = 0; 
                i < abs(n - ctr - 1);
                i++)
        {
            cout << " ";
        }
          
        vector lst;
  
        // Iterate [0, m] 
        for(int i = 0; i < m; i++)
        {
              
            // Iterate [0, n] 
            for(int j = 0; j < n; j++)
            {
                  
                // Diagonal Elements 
                // Condition 
                if (i + j == ctr)
                {
                      
                    // Appending the 
                    // Diagonal Elements 
                    lst.push_back(li[i][j]);
                }
            }
        }
              
        // Printing reversed Diagonal 
        // Elements 
        for(int i = lst.size() - 1; i >= 0; i--)
        {
            cout << lst[i] << " ";
        }
        cout << endl;
        ctr += 1;
    }
}
  
// Driver code    
int main()
{
      
    // Dimensions of Matrix 
    int n = 8;
    int m = n; 
      
    // Given matrix 
    vector> li{ 
        { 4, 5, 6, 9, 8, 7, 1, 4 }, 
        { 1, 5, 9, 7, 5, 3, 1, 6 }, 
        { 7, 5, 3, 1, 5, 9, 8, 0 }, 
        { 6, 5, 4, 7, 8, 9, 3, 7 }, 
        { 3, 5, 6, 4, 8, 9, 2, 1 }, 
        { 3, 1, 6, 4, 7, 9, 5, 0 }, 
        { 8, 0, 7, 2, 3, 1, 0, 8 }, 
        { 7, 5, 3, 1, 5, 9, 8, 5 } };
      
    // Function call 
    matrix(n, m, li);
  
    return 0;
}
  
// This code is contributed by divyeshrabadiya07


输出:
4
      1 5
     7 5 6
    6 5 9 9
   3 5 3 7 8
  3 5 4 1 5 7
 8 1 6 7 5 3 1
7 0 6 4 8 9 1 4
 5 7 4 8 9 8 6
  3 2 7 9 3 0
   1 3 9 2 7
    5 1 5 1
     9 0 0
      8 8
       5



时间复杂度: O(N 2 )
辅助空间: O(1)

有关详细信息,请参阅有关将矩阵旋转 45 度的完整文章!