【山科OJ】Problem C: Matrix Problem (III) : Array Practice
Description
求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才能相乘。可以确保所有运算结果都在int类型的范围之内。
Input
输入数据为多个矩阵(最少2个),每个矩阵以两个正整数m和n开始,满足0<m,n<=100,接下来为一个m行n列的矩阵A。当输入的m和n均为0时,表示输入数据结束。
Output
对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘……按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。
若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Not satisfied the definition of matrix multiplication!”。然后用第k+1个矩阵去和第k+2个矩阵相乘。最后一个矩阵只做乘数。
每两组输出之间用一个空行分隔开。
Sample Input
2 3
1 1 1
1 1 1
3 3
1 2 3
4 5 6
7 8 9
3 1
0
0
0
0 0
Sample Output
12 15 18
12 15 18
0 0
HINT
矩阵的乘法就是一行乘以一列加起来做一个元素。
Append Code
#include<stdio.h>
#include<string.h>
/*思路*/
// 创建两个数组,一个数组a装当前输入的数组,一个数组b装之前的数组结果
// 循环外先输入m和n,判断条件是m和n!=0;
// 子函数输入m,n并给a赋值
// 先判断输入的是第几组数据,分别处理
// 是第一组,用flag=0为第一组,先判断flag是不是等于0,等于0则进入第一组条件
//直接将a数组的所有值赋给b,mn分别赋值给xy,flag++
// 不是第一组的话,如果y==m,进入子函数使数组相乘,创建一个临时数组c,
//用来收录ab相乘的结果。
//输出c,再将c赋值给b,y=n,x不变。
//如果y!=m,则两组函数不可以相乘,那么输出“不能相乘”,flag=0,将刚输入的一组数赋值给void inputMtr(int m,int n,int a[101][101])
{for(int i=0; i<m; i++){for(int j=0; j<n; j++){scanf("%d",&a[i][j]);}}
}void output(int m,int n,int a[101][101])
{for(int i=0; i<m; i++){for(int j=0; j<n; j++){if(j!=0)printf(" %d",a[i][j]);else printf("%d",a[i][j]);}printf("\n");}
}void MulMtr(int m,int n,int a[101][101],int x,int y,int b[101][101])
{int c[101][101]= {0};for(int i=0; i<x; i++){for(int j=0; j<n; j++){for(int k=0; k<y; k++){c[i][j]+=b[i][k]*a[k][j];}}}output(x,n,c);for(int i=0; i<x; i++){for(int j=0; j<n; j++){b[i][j]=c[i][j];}}}int main()
{freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);int a[101][101]= {0},b[101][101]= {0};int m,n,x,y,flag=0;// flag用来判断输入的是不是第一个scanf("%d %d",&m,&n);while(m&&n){inputMtr(m,n,a);if(flag!=0){if(flag!=1)printf("\n");if(y==m){MulMtr(m,n,a,x,y,b);y=n;}else{flag=0;printf("Not satisfied the definition of matrix multiplication!\n\n");}}if(flag==0){for(int i=0; i<m; i++){for(int j=0; j<n; j++){b[i][j]=a[i][j];}}x=m;y=n;}flag++;scanf("%d %d",&m,&n);}return 0;
}
为啥一直不对?
【山科OJ】Problem C: Matrix Problem (III) : Array Practice相关推荐
- Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787
Problem F: Matrix Problem (III) : Array Practice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 8787 ...
- 【山科OJ】Problem A: 社交网络的好友推荐
Description Jack同学在人人网上注册了一个用户,发现人人网需要回答一些问题,而后网站根据自己的回答向自己推荐了一些具有相似回答的网友.Jack同学恰好正在学习编程,想编写一个程序来模拟这 ...
- 【山科OJ】Problem D: 藏头诗
Description 有个小伙暗恋同班的姑娘,但是苦于害羞腼腆不敢直抒胸臆.于是小伙打算写一首英文情诗给她.为了使这首情诗高端霸气上档次,小伙经过三天三夜的精心创作写了一首藏头的情诗.请问你能看出他 ...
- 问题 K: Sequence Problem (III) : Array Practice
题目描述 整数序列是一串按特定顺序排列的整数,整数序列的长度是序列中整数的个数,不可定义长度为负数的整数序列. 两整数序列A.B的和定义为一个新的整数序列C,序列C的长度是A.B两者中较长的一个,序列 ...
- Matrix Problem
Matrix Problem 题意: 给你一个n * m的二维数据c,c的每个元素值为0或1 现在要求你构造同样大小的数组a和b,要求c[i][j] =='1'的话,a[i][j] = b[i][j] ...
- 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...
- 安科 OJ 1190 连接电脑 (并查集)
时间限制:1 s 空间限制:128 M 传送门:https://oj.ahstu.cc/JudgeOnline/problem.php?id=1190 题目描述 机房里有若干台电脑,其中有一些电脑已经 ...
- 山科机器人招聘| 算法总监及视觉、规划、融合定位算法工程师
公司概况 山科机器人是国内领先.全球前十的花园机器人公司,主要从事智能花园机器人的研发和销售, 未来三年目标是成为全球前三的花园机器人公司.母公司浙江白马实业,年销售额约10亿元,产品以欧美市场为主, ...
- 山科oj2307 Problem C: Cherry
这道题还是挺水的 我朋友的 #include <bits/stdc++.h> using namespace std; class Cherry {public:Cherry(double ...
- 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)
Problem C: 星球联盟 Time Limit: 4 Sec Memory Limit: 256 MB Submit: 57 Solved: 15 [Submit][Status][Web ...
最新文章
- [转](不理想)Ubuntu下更改主显示器
- python语言怎么学-你们都是怎么学 Python 的?
- ASP.NET MVC3 + Ninject.Mvc3 依赖注入原来可以这么简单
- 重磅!阿里云MongoDB 5.0发布,速来围观新特性
- 路飞学城-python爬虫密训-第三章
- 判断sem信号量为零_将信号量递减为零的进程崩溃时,如何恢复信号量?
- 前端学习(1178):vue基础
- ip地址合不合法怎么看_电子印章合不合法?两部门再发意见认定
- resultset需要关闭吗_Java程序员都需要懂的「反射」
- HTML+CSS物业后台管理系统模板
- 独立站需要ERP系统吗?
- html用户名注册登录代码,HTML用户注册界面的实现
- 关于Faster Rcnn的一些理解
- 3DS MAX 导入骨骼动画插件
- 用C编程语言写出三行情书,用7种语言写的三行情诗,你一定没看过!
- 技术分享 | 大量 Opening tables 案例分析
- 为什么你做数据分析没思路?
- 校园网络远程登录虚拟机Linux问题解决
- 华中科技大学2019年计算机录取分数线,2019华中科技大学录取分数线
- 人事局计算机应用技术学院,计算机应用技术学校怎么样
热门文章
- CT图像去除金属伪影-MATLAB实现
- 路由器修改dns服务器,路由器DNS怎么设置如何修改路由器DNS服务器地址
- LaTex中各种文本框
- 计算智能——密码分析:面向对象的分析与设计之Use Cace图
- busboy文件上传遇到的坑,已解决
- 假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。...
- 浏览器到服务器简单流程图
- 计算机带给人们的负面影响,互联网给人们所带来的负面影响
- 微型计算机咋样插网卡,PCI网卡怎么装及插在哪 PCI网卡安装使用图文教程
- Android10支持dcip3,dcip3 相当于多少srgb