根本找不到原因a!!!在线等急!!!
查看原帖
根本找不到原因a!!!在线等急!!!
421080
only_matthew楼主2021/10/21 21:33
#include<cstdio>
#include<algorithm>
const int MAXN=20+5+5;
int m,n,k,a[MAXN][MAXN],sum,fx,fy,ex,ey,tm,ans;
struct dire{
    int x,y,sum;
}N[MAXN*MAXN];
bool cmp(dire a,dire b){
    return a.sum>b.sum;
}
int main(){
    scanf("%d %d %d",&n,&m,&k);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&a[i][j]);
            if(a[i][j]>0){
                sum++;
                N[sum].x=i;
                N[sum].y=j;
                N[sum].sum=a[i][j];
            }
        }
    }
    std::sort(N+1,N+sum+1,cmp);
    fx=1,fy=N[1].y,k--;/*
    for(int i=1;i<=sum;i++)
        printf("%d ",N[i].sum);*/
    //printf("\n");
    for(int i=1;i<=sum;i++){
        tm=0;
        ex=N[i].x;
        ey=N[i].y;
        tm=std::abs(fx-ey)+std::abs(fy-ey);
        k--;
        k-=tm;
        if(k>=ex){
            ans+=a[ex][ey];
            fx=ex,fy=ey;
        }else{
            printf("%d",ans);
            return 0;
        }
    }
    printf("%d",ans);
    return 0;
}

2021/10/21 21:33
加载中...