矩阵乘法

来源:互联网 发布:mysql with cube 编辑:程序博客网 时间:2024/05/16 15:58

Description


矩阵乘法是线性代数中最基本的运算之一。
给定三个矩阵,请编写程序判断是否成立。

Input


输入包含多组数据。每组数据的格式如下:
第一行包括两个整数p和q,表示矩阵A的大小。后继p行,每行有q个整数,表示矩阵A的元素内容。
紧接着用相同的格式给出矩阵B和矩阵C。
输入数据的最后一行是两个0,你的程序处理到这里时就应该退出了。
输入数据中所有的整数绝对值都不超过100。

Output


对每一组输入数据,你的程序都要输出单独一行字符。
如果成立则输出”Yes”
如果A和B根本不能相乘,或不成立,则输出”No”。注意大小写。

Sample Input


2 3
1 2 3
4 5 6
3 2
1 2
3 4
5 6
2 2
22 28
49 64

1 2
1 2
2 1
2
1
2 2
2 4
1 2

1 2
1 2
1 1
1
1 1
1

0 0

Sample Output


Yes
No
No

Source


第二届招商银行杯程序设计大赛


代码:

#include<iostream>#include<string.h>using namespace std;void init(int x,int y,int s[100][100]){int i,j;for (i=0; i<x; i++){for (j=0; j<y; j++) cin>>s[i][j];}}int main(){int i,j,k,flag=1;int ai,aj,bi,bj,ci,cj,a[100][100]={0},b[100][100]={0},c[100][100]={0},sum;while (cin>>ai>>aj){if(ai == 0 && aj == 0){break;}flag=1;init(ai,aj,a);cin>>bi>>bj;init(bi,bj,b);cin>>ci>>cj;init(ci,cj,c);if (aj!=bi || ai!=ci || bj!=cj){cout<<"No"<<endl;continue;}for (i=0; i<ai; i++){for (j=0; j<bj; j++){sum=0;for (k=0; k<aj; k++){sum += a[i][k]*b[k][j];}if (sum != c[i][j]){cout<<"No"<<endl;flag = 0;i=ai;break;}}}if (flag)cout<<"Yes"<<endl;}return 0; } 


0 0
原创粉丝点击