1 solutions

  • 2
    @ 2024-11-16 16:46:06

    P1086

    注意不要弄反x,y

    #include<bits/stdc++.h>
    using namespace std;
    #define _441 int
    #define _1640 return
    int m,n,k,field[30][30],srtx,srty,ans,x,y;
    void findmax(){
    	int xt=0;
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			if(field[i][j]>=xt){
    				srtx=i;srty=j;
    				xt=field[i][j];
    			}
    		}
    	}
    }
    _441 main(){
    	cin>>m>>n>>k;
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			cin>>field[i][j];
    		}
    	}
    	findmax();
    	y=srty;
    	while(1){
    		k-=(abs(srtx-x)+abs(srty-y)+srtx+1);//有没有后路
    		if(k<0)break;//没有就别走了
    		k+=srtx;//可以继续贪得无厌,不用回去
    		ans+=field[srtx][srty];//多采点
    		//coutt<<ans<<' '<<k<<endl;
    		x=srtx,y=srty;
    		field[srtx][srty]=0;//重置,不然下次findmax又找回来
    		findmax();
    	}
    	cout<<ans;
    	_1640 0;
    }
    
    
    • 1

    Information

    ID
    1132
    Time
    1000ms
    Memory
    125MiB
    Difficulty
    9
    Tags
    # Submissions
    114
    Accepted
    10
    Uploaded By