这是我的代码,不知道为啥输出0
#include <bits/stdc++.h>
using namespace std;
int t,mp[105][105];
int f[105][105];
int p,q;
int dfs(int x,int y){
    if (f[x][y]!=-1) return f[x][y];
    if (x==p && y==q) return f[x][y]=mp[x][y];
    return f[x][y]=max(dfs(x+1,y),dfs(x,y-1))+mp[x][y];
}
int main(){
    scanf("%d",&t);
    while(t--){
        int u,v;
        cin>>u>>v;
        p=u,q=v;
        for(int i=1;i<=u;i++)
            for(int j=1;j<=v;j++)
                cin>>mp[i][j];
        cout<<dfs(1,1)<<endl;
        for(int i=1;i<=u;i++)
            for(int j=1;j<=v;j++)
                mp[i][j]=0;
    }
    return 0;
}
惨不忍睹的现场:

应该输出8
谢谢dalao