主题:怎么老是PE了啊?
Matrix Multiplication
Time Limit:1000MS Memory Limit:65536K
Total Submit:34 Accepted:9
Description
aJiao 讲完矩阵的运算后,WG同学为练习一下自己的C++,遂想用程序写一下矩阵的乘法。
现有一个M行N列的矩阵A, 和一个N列M行的矩阵B。求C=A*B , 输出矩阵C。
Input
有多组输入,每组输入开始输入M, N (1<=M,N<=25);
接下来M行,每行N个整数,即输入矩阵A。( 第i行第j个为A[i][j];)
最后N行,每行M个整数,即输入矩阵B。
输入以 0 0 结束。(即当M==0 && N==0时结束程序)。可采用下列框架:
while(cin>>M>>N){ if (N==0 &&M==0) break;
....
}
Output
对应每组输入,输出矩阵C(显然是M行M列,每行的M个数字之间用空格隔开, 但是注意,每行最后一个数字不要带空格)。
每组数据后,请带一空行,如sample out。
最后的 0 0 不用处理。
Sample Input
1 1
9
10
2 3
9 10 9
9 11 10
13 12
8 14
9 7
0 0
Sample Output
90
278 311
295 332
我的程序如下!怎么老是PE啊!格式那里错了?大家指点一下!
#include<iostream>
using namespace std;
int main(){
int M,N;
while(cin>>M>>N&&!(M==0&&N==0)){
int a[M][N],b[N][M],c[M][M];
for(int i=0;i<M;i++)
for(int j=0;j<N;j++){
a[i][j]=0;
b[i][j]=0;
}
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
c[i][j]=0;
if (N==0&&M==0) break;
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
cin>>a[i][j];
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
cin>>b[i][j];
cout<<endl;
if(M==1&&N==1)
cout<<a[0][0]*b[0][0]<<endl;
else{
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
for(int k=0;k<N;k++){
c[i][j]+=a[i][k]*b[k][j];
}
for(int i=0;i<M;i++){
for(int j=0;j<M;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
}
}
return 0;
}
Time Limit:1000MS Memory Limit:65536K
Total Submit:34 Accepted:9
Description
aJiao 讲完矩阵的运算后,WG同学为练习一下自己的C++,遂想用程序写一下矩阵的乘法。
现有一个M行N列的矩阵A, 和一个N列M行的矩阵B。求C=A*B , 输出矩阵C。
Input
有多组输入,每组输入开始输入M, N (1<=M,N<=25);
接下来M行,每行N个整数,即输入矩阵A。( 第i行第j个为A[i][j];)
最后N行,每行M个整数,即输入矩阵B。
输入以 0 0 结束。(即当M==0 && N==0时结束程序)。可采用下列框架:
while(cin>>M>>N){ if (N==0 &&M==0) break;
....
}
Output
对应每组输入,输出矩阵C(显然是M行M列,每行的M个数字之间用空格隔开, 但是注意,每行最后一个数字不要带空格)。
每组数据后,请带一空行,如sample out。
最后的 0 0 不用处理。
Sample Input
1 1
9
10
2 3
9 10 9
9 11 10
13 12
8 14
9 7
0 0
Sample Output
90
278 311
295 332
我的程序如下!怎么老是PE啊!格式那里错了?大家指点一下!
#include<iostream>
using namespace std;
int main(){
int M,N;
while(cin>>M>>N&&!(M==0&&N==0)){
int a[M][N],b[N][M],c[M][M];
for(int i=0;i<M;i++)
for(int j=0;j<N;j++){
a[i][j]=0;
b[i][j]=0;
}
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
c[i][j]=0;
if (N==0&&M==0) break;
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
cin>>a[i][j];
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
cin>>b[i][j];
cout<<endl;
if(M==1&&N==1)
cout<<a[0][0]*b[0][0]<<endl;
else{
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
for(int k=0;k<N;k++){
c[i][j]+=a[i][k]*b[k][j];
}
for(int i=0;i<M;i++){
for(int j=0;j<M;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
}
}
return 0;
}