原题地址
一道DFS的题,但是我不太会运用,写了半天没写出来,上网看了一下思路,发现和我想的差不多,但是我的想法还是太麻烦了。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <iomanip>
//#include <string.h>
#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int dp[17][17];
int  vis[17][17]={0};
int mox[]={1,0};
int moy[]={0,1};
int sx,sy;
int ex,ey;
int n,r;
int falg,step=INF;
void dfs(int a, int b,int sum){
    sum+=dp[a][b];
    if(a<=n)//如果没搜到dp[n][r],继续搜
        dfs(a+1,b,sum);
    if(b<=r)//如果没搜到dp[n][r],继续搜
        dfs(a,b+1,sum);
    if(a==n&&b==r&&sum>0&&sum<step)//把sum和step最小的给step,且初始定义step为INF
        step = sum;




}
int main()
{
    //int n,r;
    cin >>n>>r;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=r; j++)
        {
            cin >>dp[i][j];
        }
    }
    dfs(1,1,0);
    cout<<step<<endl;
    return 0;

}