#include<bits/stdc++.h>
using namespace std;
const int N=30;//20+10
int n,m,t;
int x,y;
int a[N][N],back[N][N];//back记录点(x,y)回到路上的时间
void findxy(int xx,int yy){//输入小熊的现坐标
int maxx=-1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]>maxx){
maxx=a[i][j];
x=i,y=j;
}
}
}
return ;
}
int dfs(){
int ans=0;
t=t-(back[x][y]-1);//前去第一个点并采摘
ans=ans+a[x][y];
while(t>=back[x][y]){
int tx=x,ty=y;//(tx,ty)为小熊之前的位置
findxy(x,y);//找之后最大为(x,y)
t-=(abs(tx-x)+abs(ty-y)+1);//移动过去并采摘
if(back[x][y]>t){//如果过去采摘后不足时间返回
break;
}else{//时间足够
ans+=a[x][y];//采摘
a[x][y]=0;
}
}
return ans;
}
int main(){
cin>>n>>m>>t;
int maxn=-1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
back[i][j]=j;
if(a[i][j]<maxn){
maxn=a[i][j];
x=i;
y=j;
}
}
}
cout<<dfs()<<endl;
return 0;
}
大佬帮调一下,谢谢