学半年c++,基础不是很好,有些算法可能看不太懂,希望照顾一下下
#include<bits/stdc++.h>
#include<cmath>
using namespace std;
int main(){
int m,n,k,a[100][100],gs,cs,ks,si,sj;//个数,参数,棵数,i坐标,j坐标
cs=ks=gs=si=sj=0;
cin>>m>>n>>k;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]>0) ks++;
}
}
for(int h=1;h<=ks;h++){
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cs=max(cs,a[i][j]);
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(cs==a[i][j]&&h==1&&cs!=0){
sj=j;
k=k-abs(si-i)-1;
si=i;
gs=a[i][j];
a[i][j]=0;
cs=0;
}
if(cs==a[i][j]&&cs!=0&&h!=1&&(abs(si-i)+abs(sj-j)+i+1<=k)){
k=k-abs(si-i)-abs(sj-j)-1;
si=i;
sj=j;
gs=gs+a[i][j];
a[i][j]=0;
cs=0;
}
}
}
}
cout<<gs;
}