竞赛讨论区 > 在发布一次,很简洁明了,就是找不到扣的5,┭┮﹏┭┮
头像
会哥哥
发布于 2020-02-29 00:22
+ 关注

在发布一次,很简洁明了,就是找不到扣的5,┭┮﹏┭┮

#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) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐