akoj-1055-矩阵乘法
来源:互联网 发布:人工智能分析用户行为 编辑:程序博客网 时间:2024/05/16 04:28
矩阵乘法
Time Limit:1000MS Memory Limit:65536K
Total Submit:19 Accepted:7
Description
矩阵乘法是线性代数中最基本的运算之一。
给定三个矩阵 A\B\C 请编写程序判断A*B = C 是否成立。
Input
输入包含多组数据。每组数据的格式如下:
第一行包括两个整数p 和q,表示矩阵A 的大小。后继p 行,每行有q 个整数,表示矩阵A
的元素内容。
紧接着用相同的格式给出矩阵B 和矩阵C。
输入数据的最后一行是两个0,你的程序处理到这里时就应该退出了。
输入数据中所有的整数绝对值都不超过100。
Output
对每一组输入数据,你的程序都要输出单独一行字符。
如果 A*B=C成立则输出”Yes”
如果 A 和B 根本不能相乘,或A*B=C不成立,则输出”No”。注意大小写。
Sample Input
2 31 2 34 5 63 21 23 45 62 222 2849 641 21 22 12 1 2 22 4 1 2 1 2 1 2 1 1 11 1 10 0
Sample Output
YesNoNo
Hint
此题考察线性代数基本概念,请参阅线性代数教材。
Source
2009中科大ACM校赛-普及版
[Submit] [Go Back] [Status] [Discuss]
#include <stdio.h>#include <string.h>#define MAXN 101int a[MAXN][MAXN], b[MAXN][MAXN], c[MAXN][MAXN], d[MAXN][MAXN];int main(){int i, j, m, n, x, y, u, v, p;while ( ~scanf("%d%d", &m, &n)){if ( m == 0 && n == 0 ) break;for ( i=0; i<m; i++ ) {for ( j=0; j<n; j++ ) {scanf("%d", &a[i][j]);}}scanf("%d%d", &x, &y);for ( i=0; i<x; i++ ) {for ( j=0; j<y; j++ ) {scanf("%d", &b[i][j]);}}scanf("%d%d", &u, &v);for ( i=0; i<u; i++ ) {for ( j=0; j<v; j++ ) {scanf("%d", &c[i][j]);}}if ( n != x || m != u || v != y ) {puts("No");}else {for ( i=0; i<u; i++ ) {for ( j=0; j<v; j++ ) {d[i][j] = 0;for ( p=0; p<n; p++ ) {d[i][j] += a[i][p] * b[p][j];}if ( d[i][j] != c[i][j] ) break;}}if ( i == u && j == v ) puts("Yes");else puts("No"); }}return 0;}
0 0
- akoj-1055-矩阵乘法
- akoj-1082-螺旋矩阵
- 1055 -- 矩阵乘法
- 【AKOJ】1343-n*n乘法表
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- 矩阵乘法
- Android的appcompatv7导入错误处理
- hdu 1558
- printf "%.*s"
- LiveCMN API
- Android应用层View绘制流程与源码分析
- akoj-1055-矩阵乘法
- C++实现反射机制(一)
- 排版公式的多行下标
- 常用开源Jabber(XMPP) IM服务器介绍
- C++实现反射机制(二)
- Android Bitmap回收 注意事项
- Android应用AsyncTask处理机制详解及源码分析
- 路由器安全测试工具 – Router Scan v2.51
- 为程序界面添加滑动条--createTrackbar()