站外题求助
  • 板块学术版
  • 楼主bilibili_daogu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/15 12:00
  • 上次更新2024/12/15 16:03:05
查看原帖
站外题求助
757292
bilibili_daogu楼主2024/12/15 12:00

题目

代码

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 30;
int mp[N][N];
int n, m, k;
int tm;
int fx, fy, ex, ey;
int pn;
int ans;
struct dire
{
    int x, y, sum;
} stu[N * N];
bool comp(struct dire a, struct dire b)
{
    return a.sum > b.sum;
}
int main()
{
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cin >> mp[i][j];
            if (mp[i][j] > 0)
            {
                stu[++pn].sum = mp[i][j];
                stu[pn].x = i;
                stu[pn].y = j;
            }
        }
    }
    sort(stu + 1, stu + pn + 1, comp);
    fx = 1;
    fy = stu[1].y;
    k--;
    for (int i = 1; i <= pn; i++)
    {
        tm = 0;
        ex = stu[i].x;
        ey = stu[i].y;
        tm = abs(fx - ex) + abs(fy - ey);
        k--;
        k -= tm;
        if (k >= ex)
        {
            ans += mp[ex][ey];
            fx = ex;
            fy = ey;
        }
        else
        {
            cout << ans << endl;
            return 0;
        }
    }
    cout << ans << endl;
    system("pause");
    return 0;
}
2024/12/15 12:00
加载中...