基础题。
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN = 55;
struct Node //花生田的结点
{
int x, y; //坐标
int num; //花生数
}node[MAXN * MAXN];
//排序标准
bool cmp(Node n1, Node n2)
{
return n1.num > n2.num;
}
int main()
{
int T;
cin >> T;
while (T--)
{
int M, N, K;
cin >> M >> N >> K;
int index = 0;
int num;
for (int i = 1; i <= M; i++)
{
for (int j = 1; j <= N; j++)
{
cin >> num;
if (num > 0)
{
node[index].num = num;
node[index].x = i;
node[index].y = j;
++index;
}
}
}
sort(node, node + index, cmp);
int x = 0, y = node[0].y;
int sum = 0;
for (int i = 0; i < index; i++)
{
if (K < abs(x - node[i].x) + abs(y - node[i].y) + 1 + node[i].x)
break;
K -= (abs(x - node[i].x) + abs(y - node[i].y) + 1);
x = node[i].x;
y = node[i].y;
sum += node[i].num;
}
cout << sum << endl;
}
return 0;
}
继续加油。