1 条题解
-
0
C++ :
#include<stdio.h> #include<stdlib.h> #include<iostream> #include<math.h> #include<algorithm> using namespace std; typedef struct node{ int i; int j; int number; }NODE; NODE a[505]; bool cmp(NODE a,NODE b){ return a.number>b.number; } int main(){ int n,m,time,len=0; cin>>n>>m>>time; for(int i=0;i<n;i++){//输入,从零开始,则i的值就是出去的时间 for(int j=0;j<m;j++){ int t; cin>>t; if(t!=0){ a[len].number=t; a[len].i=i; a[len].j=j; len++; } } } sort(a,a+len,cmp);//排序 time=time-2; //进入和出去固定时间。 int i_dex=0,j_dex=0,ans=0;//当前位置 for(int i=0;i<len;i++){ int need=0; if(i==0){ need=a[i].i+1; }else{ need=abs(a[i].i-i_dex)+abs(a[i].j-j_dex)+1;//到下一个位置时间+摘花生的时间 } if(time>=need+a[i].i){//当前剩余时间大于或等于返回时间+need时间 则可以摘下一堆花生 i_dex=a[i].i; j_dex=a[i].j; time-=need; ans+=a[i].number; }else{//下一个摘不到,退出循环 break; } } cout<<ans<<endl; return 0; }
信息
- ID
- 1082
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者