实验12:Problem G: 强悍的矩阵运算来了
- 这个题目主要是乘法运算符的重载,卡了我好久,矩阵的乘法用3个嵌套的for循环进行,要分清楚矩阵的乘法结果是第一个矩阵的行,第二个矩阵的列所组成的矩阵。
- 重载+,*运算符时,可以在参数列表中传两个矩阵引用,分别表示前后进行运算的矩阵,或者是只传运算符之后的矩阵引用,前一个矩阵用的是隐含的this指针指向的矩阵。我用的是后者。
| Home | Web Board | ProblemSet | Standing | Status | Statistics |
Problem G: 强悍的矩阵运算来了
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 171 Solved: 98
[Submit][Status][Web Board]
Description
定义一个Matrix类,用于存储一个矩阵。重载其+、*运算符,分别用于计算两个矩阵的和、乘积;重载其<<和>>运算符,用于输出和输入一个矩阵。要求当两个矩阵不能进行加法或乘法运算时,应该输出Error。
Input
输入第1行N>0,表示有N组测试用例,共2N个矩阵。
每组测试用例包括2个矩阵。每个矩阵首先输入行数、列数,之后是该矩阵的所有元素。
Output
每个测试用例产生一组输出。具体格式见样例。注意:当不能进行加法或乘法运算时,应输出Error。
Sample Input
2 2
1 1
1 1
2 2
2 2
2 2
1 1
1
1 2
2 2
1 1
1
2 2
2 2
2 2
Sample Output
3 3
3 3
4 4
4 4
Case 2:
Error
2 2
Case 3:
Error
Error
HINT
Append Code
-->
한국어<中文فارسیEnglishไทยAll Copyright Reserved 2010-2011SDUSTOJTEAMGPL2.02003-2011HUSTOJ ProjectTEAM
Anything about the Problems, Please Contact Admin:admin
#include<iostream>
#define MAX 102
using namespace std;
class Matrix
{
public:
int r,c,error;
int m[MAX][MAX];
Matrix():error() {}
Matrix operator+(const Matrix &M)
{
Matrix tmp;
tmp.r=M.r;
tmp.c=M.c;
/*for(int i=0;i<tmp.r;i++)
for(int j=0;j<tmp.c;j++)
tmp.m[i][j]=0;*/
if(r!=M.r||c!=M.c)
{
tmp.error=;
return tmp;
}
for(int i=; i<r; i++)
for(int j=; j<c; j++)
{
tmp.m[i][j]=m[i][j]+M.m[i][j];
}
return tmp;
}
Matrix operator*(const Matrix &M)
{
Matrix tmp;
tmp.r=r;
tmp.c=M.c;
for(int i=;i<tmp.r;i++)
for(int j=;j<tmp.c;j++)
tmp.m[i][j]=;
if(c!=M.r)
{
tmp.error=;
return tmp;
}
for(int i=; i<r; i++)
{
for(int j=; j<M.c; j++)
{
int sum = ;
for(int k=; k<M.r; k++)
{
sum += m[i][k] * M.m[k][j];
}
tmp.m[i][j] = sum;
}
}
return tmp;
}
friend istream &operator>>(istream &is,Matrix &M);
friend ostream &operator<<(ostream &os,Matrix &M); };
istream &operator>>(istream &is,Matrix &M)
{
is>>M.r>>M.c;
for(int i=; i<M.r; i++)
for(int j=; j<M.c; j++)
{
is>>M.m[i][j];
}
return is;
}
ostream &operator<<(ostream &os,Matrix &M)
{
if(M.error==)
{
os<<"Error"<<endl;
return os;
}
for(int i=; i<M.r; i++)
for(int j=; j<M.c; j++)
{
if(j!=M.c-)
os<<M.m[i][j]<<" ";
else
os<<M.m[i][j]<<endl;
}
///os<<endl;
return os;
}
int main()
{
int cases, i;
cin>>cases;
for (i = ; i < cases; i++)
{
Matrix A, B, C, D;
cin>>A>>B;
C = A + B;
D = A * B;
cout<<"Case "<<i + <<":"<<endl;
cout<<C<<endl;
cout<<D;
}
return ;
}
实验12:Problem G: 强悍的矩阵运算来了的更多相关文章
- 实验9:Problem G: 克隆人来了!
想要输出""的话: cout<<"A person whose name is \""<<name<<" ...
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem G: Check The Check(模拟国际象棋)
Problem G: Check The Check Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 10 Solved: 3[Submit][Statu ...
- The Ninth Hunan Collegiate Programming Contest (2013) Problem G
Problem G Good Teacher I want to be a good teacher, so at least I need to remember all the student n ...
- 【贪心+中位数】【新生赛3 1007题】 Problem G (K)
Problem G Time Limit : 4000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- Problem G: If We Were a Child Again
Problem G: If We Were a Child AgainTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 14[Submi ...
- Problem G: Keywords Search
Problem G: Keywords SearchTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 10 Solved: 6[Submit][Status] ...
- BZOJ4977 八月月赛 Problem G 跳伞求生 set 贪心
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4977 - 八月月赛 Problem G 题意 小明组建了一支由n名玩家组成的战队,编号依次为1到n ...
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
Problem G. k-palindrome 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022 ...
- ZOJ 4010 Neighboring Characters(ZOJ Monthly, March 2018 Problem G,字符串匹配)
题目链接 ZOJ Monthly, March 2018 Problem G 题意 给定一个字符串.现在求一个下标范围$[0, n - 1]$的$01$序列$f$.$f[x] = 1$表示存在一种 ...
随机推荐
- andorid jni入门教程一之helloworld
开发环境:windows2007, eclipse 做anroid越深发现用到底层开发的时候越多,但是我以前也没有搞过,因此现在打算好好学习学习.先从最简单的做起.正所谓万事开头难啊. 搞了近一天终于 ...
- 技术总结之SpringIOC
1)SpringIOC核心模拟实现 思路:初始化Spring容器时,从配置文件中读取定义好的Bean的信息,根据配置属性初始化后存入Spring容器中. 当需要某个Bean时,直接从容器中通过id获取 ...
- GET方法传递中文参数乱码解决办法
1.在页面中对你的URL进行编码 使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI(“小甜甜") 2.在后台通过解码来接 ...
- Android 布局之FrameLayout
Android 布局之FrameLayout 1 FrameLayout简介 对于FrameLayout,官方介绍是:FrameLayout is designed to block out an a ...
- 《微信小程序七日谈》- 第一天:人生若只如初见
<微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...
- 移除了css框架,世界干净了
在之前的webapp项目里,我使用了bootstrap作为三方的css库,只调取了其中一部分源码的less使用,大部分代码仍然是自己写的. 自己的代码也是参照bootstrap的目录结构和它的一些规范 ...
- Python - 属性简介"__name__"
模块是对象,并且每个模块都有一个内置属性__name__.当一个模块被直接运行的时候,该模块__name__的值就等于缺省的'__main__'.如果一个模块被import ,那么这个被引入模块__n ...
- 基于Solr实现HBase的二级索引
文章来源:http://www.open-open.com/lib/view/open1421501717312.html 实现目的: 由于hbase基于行健有序存储,在查询时使用行健十分高效,然后想 ...
- C#语法糖之 ReflectionSugar 通用反射类
用法很简单: ReflectionSugar rs = new ReflectionSugar(100);//缓存100秒 ,可以不填默认不缓存 rs.有嘛点嘛 性能测试: 性能测试类源码: ht ...
- JS魔法堂:精确判断IE的文档模式by特征嗅探
一.前言 苦逼的前端攻城狮都深受浏览器兼容之苦,再完成每一项功能前都要左顾右盼,生怕浏览器不支持某个API,生怕原生API内含臭虫因此判断浏览器类型和版本号成了不可绕过的一道关卡,而特征嗅探是继浏览器 ...