//照着地图取花生,每次都是取最大的花生数,在限定的步数内,可以取到最多的花生数!用贪心就可以!
#include "cstdio"
#include "iostream"
#include "math.h"
using namespace std;
int map[60][60];
int main()
{
int tc, m, n, k, i, j, totaltime, curi, curj, x, y, max, sum;
scanf("%d", &tc);
while (tc--)
{
scanf("%d%d%d", &m, &n, &k);
totaltime = 0;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
scanf("%d", &map[i][j]);
totaltime = 0, curi = 0, curj = 0, sum = 0;
while (1)
{
max = 0;
x = curi;
y = curj;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
{
if (max < map[i][j])
{
max = map[i][j];
curi = i;
curj = j;
}
}
if (x == 0)
y = curj;
if (totaltime + abs((int)(curi-x)) + abs((int)(curj-y)) + 1 + curi <= k)
{
sum += max;
totaltime += abs(int(curi - x)) + abs(int(curj-y)) + 1;
map[curi][curj] = -1;
x = curi;
y = curj;
}
else
{
cout << sum << endl;
break;
}
}
}
system("pause");
}
poj 1928 The Peanuts
最新推荐文章于 2020-02-05 19:42:17 发布