暴力算法 遍历每一条路记录最小血量

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int n,m;
vector<int> dp;

void solve(vector<vector<int>> &map, int x, int y, int last, int min_step)
{
    if(x == n - 1 && y == m-1)
    {
        dp.push_back(min(min_step, map[x][y]+last));
        return;
    }
    int current = map[x][y]+last;
    if(x<n -1 )
    {
        solve(map, x+1, y, current, min(min_step, current));
    }

    if(y<m -1)
    {
        solve(map, x, y+1, current, min(min_step, current));
    }
}

int main() {
    cin >> n >> m;
    vector<vector<int>> map(n,vector<int>(m,0));
    for(int i = 0;i<n;i++){
        for(int j = 0;j<m;j++){
            cin>>map[i][j];
        }
    }
    solve(map, 0,0,0,map[0][0]);
    sort(dp.begin(), dp.end());
    if(dp.back()>=1)
    {
        cout<<1;
    }
    else {
        cout<<1-dp.back();
    }
    return 0;
}