求大神看看
#include<bits/stdc++.h>
using namespace std;
int a[21][21],maxi,maxj;
struct point{
int n,maxi,maxj;
};
int main(){
int m,n,k,xi,xj;
point b[401];
xi=xj=0;
scanf("%d %d %d",&m,&n,&k);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
int c=1; //数组编号
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(a[i][j]>0){
b[c].n=a[i][j];
b[c].maxi=i;
b[c].maxj=j;
c++;
}
c--;
int time=0,sum=0;
int i=1;
while(1){
if(time+(b[i].maxi-0+(abs(xi-b[i].maxi)))>=k)
break;
sum+=b[i].n;
time+=abs(xi-b[i].maxi)+abs(xj-b[i].maxj);
xi=maxi;
xj=maxj;
i++;
}
printf("%d",sum);
return 0;
}