首页 > 其他分享 >矩阵写法

矩阵写法

时间:2024-10-05 17:11:17浏览次数:1  
标签:matrix int 矩阵 re init operator 写法

template<int N,int M,class T = long long>
struct matrix {
	int m[N][M];
	matrix(){memset(m,0,sizeof(m));}
	void init(){for(int i = 0;i < N;i++) m[i][i] = 1;}
	friend bool operator != (matrix<N,M> x,matrix<N,M> y) {
		for(int i = 0;i<N;i++)
			for(int j = 0;j<M;j++)
				if(x[i][j] != y[i][j])
					return true;
		return false;
	}
	int* operator [] (const int pos) {return m[pos];}
	void print(string s) {
		cout<<'\n';
		string t = "test for " + s + " matrix:";
		cout<<t<<'\n';
		for(int i = 0;i<N;i++)
			for(int j = 0;j<M;j++)
				cout<<m[i][j]<<" \n"[j == M - 1];
		cout<<'\n';
	}
};
template<int N,int M,int R,class T = long long>
matrix<N,R,T> operator * (matrix<N,M,T> a,matrix<M,R,T> b) {
	matrix<N,R,T> c;
	for(int i = 0;i<N;i++)
		for(int j = 0;j<M;j++)
			for(int k = 0;k<R;k++)
				c[i][k] = c[i][k] + a[i][j] * b[j][k];
	return c;
}
template<int N,int M,class T = long long>
matrix<N,M,T> operator + (matrix<N,M,T> a,matrix<N,M,T> b) {
	for(int i = 0;i<N;i++)
		for(int j = 0;j<M;j++)
			a[i][j] += b[i][j];
	return a;
}
template<int N,class T = long long>
matrix<N,N,T> qpow(matrix<N,N,T> x,int k) {
	matrix<N,N,T> re;
	re.init();
	while(k){
		if(k & 1) re = re * x;
		x = x * x;
		k >>= 1;
	}
	return re;
}

标签:matrix,int,矩阵,re,init,operator,写法
From: https://www.cnblogs.com/WG-MingJunYi/p/18448118

相关文章

  • 在Js中匿名函数的几种写法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • 【py】python实现矩阵的加、减、点乘、乘法
    好的,我将使用Python语言来解决这个问题。我们将使用NumPy库来创建数组和进行矩阵运算。以下是完整的代码:importnumpyasnp#(1)创建一个3x4的二维数组test1,数据值要求从0~1之间test1=np.random.rand(3,4)#(2)创建12个服从均匀分布的随机数,尺寸为3x4的二维数组t......
  • 使用鼠标点击矩阵上下左右的数字初始化为1 计算所需总共点击次数矩阵所有数字变成1的
    1importjava.util.ArrayList;23publicclassHuaweiTest2{4publicstaticvoidmain(String[]args){5//System.out.println("HelloWorld!");6}78publicstaticIntegergetMilliSecondsForInputInicialize......
  • 代码随想录算法训练营Day2|209.长度最小的子数组 59.螺旋矩阵
    学习资料:https://programmercarl.com/数组总结篇.html#数组的经典题目移动窗格,首尾指针根据条件变化模拟行为,循环不变量(左闭右闭或左闭右开)整个过程保持一致学习记录:209.长度最小的子数组(用while使得尾指针遍历全部;用while实现,当[首:尾]之和>目标值,才移动首指针;为了求最小长度......
  • 行列式求法和矩阵树定理
    1.矩阵树定理无向图,有n个点,如果说i-j之间有连边,那么矩阵g[i][j]=g[j][i]=-1(i-j之间的边的数量),否则值为0矩阵上对角线上的值为该点的度数,g[i][i]=d[i];生成树个数:任选i,去掉i行i列之后的行列式的值生成树的权值=边权的乘积,所有生成树的权值之和?i-j之间右边,g[i][j]=......
  • P1939 矩阵加速
    P1939矩阵加速已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。对于\(100\%\)的数据\(1\leqT\leq100\),\(1\leqn\leq2\times......
  • 手把手实现完善矩阵类(分数数据类型)
    矩阵类功能:矩阵变换分数数据类型使得精度丢失率极低加,减,数乘,矩阵相乘,转置,幂次,初等变换伴随矩阵,逆矩阵,矩阵行列式的值,后方增添/删除矩阵,矩阵的秩获取并输出齐次/非齐次线性方程组的解向量演示:矩阵输出,初等行变换后输出,解向量输出实现矩阵类,如何适应不同数据类型?模板?对......
  • neo4j 统计多个节点之间关系总和的写法-包含多个collect合并成一个并去重操作
    在使用neo4j数据库时,会遇到计算与指定节点产生关联的数量统计需求,例如指定6个节点1,2,3,4,5,6需要找出与这6个节点中4个节点有关联的节点(要求排除这6个节点的数据)先看实现查询语句:MATCH(start:person_info)-[r1]-(n)-[r2]-(end:person_info)WHEREstart.persocountIdin['1......
  • PbootCMS调用全站所有栏目最新文章的写法
    在PbootCMS中,如果你想调用全站所有文章,可以使用{pboot:list}标签,并且将scode参数设置为*来实现。下面是一个具体的示例代码:{pboot:listscode=*num=5}<li><ahref="[list:link]">[list:title]</a></li>{/pboot:list}代码解析{pboot:listscode=*num=5}:这个标签......
  • 14、图-邻接矩阵
    1、邻接矩阵的定义和初始化#include<stdio.h>#include<malloc.h>#include<assert.h>#defineDefault_Vertices_Size10//顶点#defineTchar//无向不带权的图typedefstructGraphMtx{intMaxVertices;//最大的顶点数intNumVertices;//真实的顶点数......