C++程序 查找矩阵的正常值和痕迹
给定一个二维矩阵,任务是找出矩阵的正常值和痕迹。
正常值 是指矩阵元素的平方和的平方根。
对于一个n x n的方阵, 痕迹 是对角线元素的和。
示例:
输入: mat[][] = {{7, 8, 9},
{6, 1, 2},
{5, 4, 3}};
输出: 正常值=16
痕迹=11
说明: 正常值=sqrt(77+88+99+66+
11+22+55+44+3*3)
= 16
痕迹=7+1+3=11
输入: mat[][] = {{1, 2, 3},
{6, 4, 5},
{2, 1, 3}};
输出: 正常值=10
痕迹=8
说明: 正常值=sqrt(11+22+33+66+44+
55+22+11+3*3)
痕迹= 8(1+4+3)
//C++程序查找给定矩阵的迹和正常值
#include<bits/stdc++.h>
using namespace std;
//给定矩阵的大小
const int MAX = 100;
//返回大小为n x n的矩阵的正常值
int findNormal(int mat[][MAX], int n)
{
int sum = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
sum += mat[i][j] * mat[i][j];
return sqrt(sum);
}
//返回大小为n x n的矩阵的迹
int findTrace(int mat[][MAX], int n)
{
int sum = 0;
for (int i = 0; i < n; i++)
sum += mat[i][i];
return sum;
}
//驱动程序
int main()
{
int mat[][MAX] = {{1, 1, 1, 1, 1},
{2, 2, 2, 2, 2},
{3, 3, 3, 3, 3},
{4, 4, 4, 4, 4},
{5, 5, 5, 5, 5}};
cout << "矩阵的迹= " <<
findTrace(mat, 5) << endl;
cout << "矩阵的正常值= " <<
findNormal(mat, 5) << endl;
return 0;
}
输出 :
矩阵的迹=15
矩阵的正常值=16
时间复杂度: O(n*n)
空间复杂度: O(1)