怎么这么像我学校的程序设计比赛题。。。正好:
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
typedef vector<vector<int> > mat;
void print1(const mat& a) //用于判别输入数是否成功和是否错误
{
for(int i=0;i<a.size();++i)
{
for(int j=0;j<a[i].size();++j)
cout<<"a["<<i<<"]["<<j<<"]"<<"="<<a[i][j]<<" ";
cout<<endl;
}
}
void print2(vector<int>& v,int m,int n,ofstream& out) //输出结果
{
for(int i=0;i<m;++i)
{
for(int j=0;j<n;++j)
out<<v[j+n*i]<<" ";
out<<endl;
}
}
void mul(mat& a,int m,int s,int n,ofstream& out) //进行矩阵乘法
{
int sum=0;
vector<int> v;
for(int x=0;x<m;++x)
{
for(int y=0;y<n;++y)
{
for(int z=0;z<s;++z)
sum+=a[x+1][z]*a[1+m+z][y];
v.push_back(sum);
sum=0;
}
}
print2(v,m,n,out);
}
int main()
{
ifstream in("matrix.txt");
ofstream out("estdout.pc2");
mat a;
int m,s,n;
for(string t;getline(in,t);)
{
vector<int> b;
istringstream sin(t);
for(int i;sin>>i;)
b.push_back(i);
a.push_back(b);
}
m=a[0][0];
s=a[0][1];
n=a[0][2];
// print1(a);
mul(a,m,s,n,out);
return 0;
}
额。。。没看到要用二维数组,我用二维向量做的。。。比较省事的方法,另外那个最大元素只要做个double for就好了。。。应该很容易吧。。。剩下的。。算了。。当我路过好了
温馨提示:答案为网友推荐,仅供参考