矩阵的基本变换 | Matrix
来源:互联网 发布:qt淘宝刷单兼职可信 编辑:程序博客网 时间:2024/05/18 01:48
#include<bits/stdc++.h>using namespace std;#define max(x,y) Max(x,y)#define min(x,y) Min(x,y)#define REP(i,j,k) for (int i=(j),_end_=(k);i<=_end_;++i)#define debug(...) fprintf(stderr,__VA_ARGS__)#define pb push_back#define ALL(x) ((x).begin()+1),(x).end()#define SZ(x) (int((x).size()-1))template <typename T> inline T Max(T x,T y){ return x > y ? x : y; }template <typename T> inline T Min(T x,T y){ return x < y ? x : y; }typedef long long LL;const int dmax=1010,INF=0x3f3f3f3f,MOD=1e6+7;int n;struct matrix{int n,m;int mat[dmax][dmax];matrix(){ memset(mat,0,sizeof(mat)); }void powset(int n){REP(i,1,n)REP(j,1,n)mat[i][j]=i==j;}void fibset(){ n=m=2; mat[1][1]=mat[1][2]=mat[2][1]=1; }int fib(){ return mat[2][1]; }void sizeset(int x,int y){ n=x,m=y; }void clear(){ n=m=0; memset(mat,0,sizeof(mat)); }void inversion(){matrix tmp;REP(i,1,n)REP(j,1,m)tmp.mat[j][i]=mat[i][j];REP(i,1,n)REP(j,1,m)tmp.mat[j][i]=mat[i][j];REP(i,1,m)REP(j,1,n)mat[i][j]=tmp.mat[i][j];swap(n,m);}};inline bool cmp(const matrix &x,const matrix &y){ return x.n==y.n && x.m==y.m; }inline matrix operator +(matrix x,matrix y){matrix tmp;if (!cmp(x,y)){debug("Matrix calc failed ( error = + )\n");return tmp;}int n=x.n,m=x.m;tmp.sizeset(n,m);REP(i,1,n)REP(j,1,m)tmp.mat[i][j]=x.mat[i][j]+y.mat[i][j];return tmp;}inline void operator +=(matrix &x,matrix y){ x=x+y; }inline matrix operator *(matrix x,matrix y){matrix tmp;if (x.m!=y.n){debug("Matrix calc failed ( error = * )\n");return tmp;}int n=x.n,p=x.m,m=y.m;tmp.sizeset(n,m);REP(i,1,n)REP(j,1,m)REP(k,1,p)tmp.mat[i][j]+=x.mat[i][k]*y.mat[k][j];return tmp;}inline void operator *=(matrix &x,matrix y){ x=x*y; }inline matrix operator ^(matrix x,int y){matrix tmp;tmp.powset(n);tmp.sizeset(2,2);while (y>0){if (y&1)tmp*=x;x*=x;y>>=1;}return tmp;}inline void fib(matrix &x,int y){ x=x^y; }void init(matrix &x){int n,m;scanf("%d%d",&n,&m);x.sizeset(n,m);REP(i,1,x.n)REP(j,1,x.m)scanf("%d",&x.mat[i][j]);}void outit(matrix x){REP(i,1,x.n)REP(j,1,x.m)printf("%d%c",x.mat[i][j],j==x.m?'\n':' ');} int main(){#ifndef ONLINE_JUDGEfreopen("input.txt","r",stdin);freopen("output.txt","w",stdout);#endifmatrix x,y;init(x);init(y);x+=y;outit(x);x.clear();y.clear();init(x);init(y);x*=y;outit(x);x.clear();init(x);x.inversion();outit(x);return 0;}
0 0
- 矩阵的基本变换 | Matrix
- HDOJ 5671-Matrix【矩阵的变换】
- matrix矩阵变换
- C# 矩阵变换Matrix
- OpenGL之矩阵变换Matrix
- Android——Matrix变换矩阵的探索(1)
- Android——Matrix变换矩阵的探索(2)
- android中的图像矩阵变换Matrix的所有方法
- Matlab中矩阵的基本变换
- 基本的2D图形变换&变换矩阵推导(转)
- 基本的2D图形变换&变换矩阵推导
- 矩阵基本变换
- Matrix的基本三种变换Scale、Translation、Skew
- OpenGL笔记之矩阵变换(Matrix Transformation)
- OpenGL笔记之矩阵变换(Matrix Transformation)
- OpenGL笔记之矩阵变换(Matrix Transformation)
- OpenGL笔记之矩阵变换(Matrix Transformation)
- OpenGL笔记之矩阵变换(Matrix Transformation)
- Android Studio 库文件中使用使用switch-case语句访问资源ID报错
- 类 Menu定义不明确。
- c#代码连接数据库,以及进行crud操作等
- Codeforces Round #346 (Div. 2)(C)贪心
- 隐藏/改变导航条底部的黑线
- 矩阵的基本变换 | Matrix
- log4j redis-appender pom
- centos安装nodejs
- iOS-一个对UIAlertController的封装类分享
- 将动态编译生成的exe及其依赖的dll打包方法
- 你所不知的 CSS ::before 和 ::after 伪元素用法
- Ubuntu14.04下Caffe安装与问题总结
- 牛客网-句子逆序问题(即,将一个句子中的所有单词间的顺序逆序)
- orcale_插入数据,如果存则删除,不存在则插入