我使用二维向量,并多出一行一列来存放每行每列的和,操作一次就更新权值和每行每列的和,但是通过95,请大佬看看我是少考虑什么了吗?不胜感激
#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;
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];
for(j=0;j<m;j++)
for(i=0;i<n;i++)
vec[n][j]+=vec[i][j];
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++)
for(j=0;j<m;j++)
vec[i][m]=0;
for(j=0;j<m;j++)
for(i=0;i<n;i++)
vec[n][j]=0;
k--;
}
cout<<score;
return 0;
}
#include<vector>
using namespace std;
int main()
{
int n,m,k;
cin>>n>>m>>k;
int i=0,j=0;
int score=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];
for(j=0;j<m;j++)
for(i=0;i<n;i++)
vec[n][j]+=vec[i][j];
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++)
for(j=0;j<m;j++)
vec[i][m]=0;
for(j=0;j<m;j++)
for(i=0;i<n;i++)
vec[n][j]=0;
k--;
}
cout<<score;
return 0;
}
全部评论
(1) 回帖