菜鸡落泪
用递归写好简洁,但是超时了😭
#include <vector> #include <iostream> #include <algorithm> using namespace std; int f_max(vector<vector<int>> &ta, int level, int i, int j, int gold) { if (i <= level && j <= i) { gold += ta[i][j]; } else { return gold; } return max(f_max(ta, level, i + 1, j, gold), f_max(ta, level, i + 1, j + 1, gold)); } int main(){ int N; cin>>N; vector<vector<int>> ta(N,vector<int> (N,0)); for(int i=0;i<N;++i){ for(int j=0;j<=i;++j){ cin>>ta[i][j]; } } int res=f_max(ta,N-1,0,0,0); cout<<res<<endl; }