#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n,m,k;
cin>>n>>m>>k;
int i=0,j=0;
int score=0;
int sum=0;
vector<vector<int> > vec(n+1,vector<int>(m+1));
for(i=0;i<n;i++) //输入矩阵
{
for(j=0;j<m;j++)
{
cin>>vec[i][j];
}
}
while(k!=0)
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)//计算每一行每一列的和
{
vec[i][m]+=vec[i][j];
vec[n][j]+=vec[i][j];
}
for(i=0;i<n+1;i++)
{
for(j=0;j<m+1;j++)
{
cout<<vec[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
int score_raw=0;
int raw=0;
int score_col=0;
int col=0;
for(i=0;i<n;i++)//计算行里面和最大的一行并记录行号
{
if(vec[i][m]>score_raw)
{
score_raw=vec[i][m];
raw=i;
}
}
for(j=0;j<m;j++)//计算列里面和最大的一列并记录列号
{
if(vec[n][j]>score_col)
{
score_col=vec[n][j];
col=j;
}
}
if(score_raw>score_col)//如果行大,选行,并把一行权重修改
{
score+=score_raw;
for(j=0;j<m;j++)
{
vec[raw][j]=0;
}
}
else//如果列大,选列,并把一列权重修改
{
score+=score_col;
for(i=0;i<n;i++)
{
vec[i][col]=0;
}
}
for(i=0;i<n;i++) //把每一行和每一列的和修改为0
for(j=0;j<m;j++)
{
vec[i][m]=0;
vec[n][j]=0;
}
k--;
}
cout<<score;
return 0;
}
全部评论
(1) 回帖