1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; //p:存放数组的坐标及坐标对应的花生数量 int m,n,k,a[30][30],p[1000][3]; int main(){ int i,j,s = 0; //读入数据 cin>>m>>n>>k; for(i = 1;i <= m;i++){ for(j = 1;j <= n;j++){ cin>>a[i][j]; if(a[i][j] > 0){ p[s][0] = i; p[s][1] = j; p[s][2] = a[i][j]; s++; } } } //对p数组按照花生数量由大到小排序 for(i = 1;i < s;i++){ for(j = 0;j <= s - i - 1;j++){ if(p[j][2] < p[j+1][2]){ swap(p[j],p[j+1]); } } } //统计时间和摘到的花生数量 int time = 0; int sum = 0; //遍历每个花生点 for(i = 0;i < s;i++){ //如果是第一个花生点 if(i == 0){ if(p[i][0] + 1 + p[i][0] <= k){ time = p[i][0] + 1; sum = sum + p[i][2]; }else{ break; } }else{ if(time + abs(p[i][0]-p[i-1][0]) + abs(p[i][1]-p[i-1][1]) + 1 + p[i][0] <= k){ time = time + abs(p[i][0]-p[i-1][0]) + abs(p[i][1]-p[i-1][1]) + 1; sum = sum + p[i][2]; }else{ break; } } } cout<<sum<<endl; }
- 1
信息
- ID
- 2402
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者