C++程序 用于Markov矩阵
给定一个m x n的2D矩阵,检查它是否是Markov矩阵。
Markov矩阵: 每行总和等于1的矩阵。
Markov矩阵的示例
例子:
输入 :
1 0 0
0.5 0 0.5
0 0 1
输出: yes
说明:
每行之和等于1,
因此它是Markov矩阵。
输入:
1 0 0
0 0 2
1 0 0
输出:
no
做法: 初始化一个2D数组,然后取另一个单一的一维数组来存储矩阵每行的和,检查存储在这个1D数组中的所有和是否都等于1,如果是,则为Markov矩阵而否则不是。
// C ++代码来检查Markov矩阵
#include <iostream>
using namespace std;
#define n 3
bool checkMarkov(double m[][n])
{
//外部循环访问行
//内部访问列
for (int i = 0; i <n; i++) {
//找到当前行的和
double sum = 0;
for (int j = 0; j < n; j++)
sum = sum + m[i][j];
if (sum!= 1)
返回false;
}
返回true;
}
// Driver Code
int main()
{
//待检查矩阵
double m [3] [3] = {{0,0,1},
{0.5,0,0.5},
{1,0,0}};
//调用函数check()
if(checkMarkov(m))
cout << " yes ";
else
cout << " no ";
}
输出:
yes
时间复杂度: O(m*n)
, 这里,m是行数,n是列数。
辅助空间: O(1), 因为使用了恒定的额外空间。