top函数错了,改成下面的样子。 int top(int i,int j){ if(i==N-1){ return tri[i][j]; }else{ int a=top(i+1,j); int b=top(i+1,j+1); return (a>b)?(a+tri[i][j]):(b+tri[i][j]); } } 另外你这样做会有很多重复的计算,应该用一个二维数组存储计算过的节点。 下面是我刚刚写的,比较大众的做法(我也是弱鸡,代码丑别笑我 = ̄ω ̄= #include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <climits> using namespace std; int main(){ int N; cin>>N; while(N--){ int n; cin>>n; int a[n+1][n]; // 这里dp数组本应为dp[n+1][n] // 因为第i层的状态仅由i-1层决定 // 为了节省空间,所以仅分配了两层 int dp[2][n]; memset(dp,0,sizeof dp); for(int i=1;i<=n;++i){ for(int j=0;j<n;++j){ cin>>a[i][j]; } } int las(0),cur(1); dp[las][0] = a[1][0]; for(int i=2;i<=n;++i){ for(int j=0;j<i;++j){ if(j-1<0){ dp[cur][j] = dp[las][j]+a[i][j]; }else if(j+1>=i){ dp[cur][j] = dp[las][j-1]+a[i][j]; }else{ dp[cur][j] = max(dp[las][j],dp[las][j-1])+a[i][j]; } } swap(las,cur); } int res = INT_MIN; for(int i=0;i<n;++i){ res = max(res,dp[las][i]); } cout<<res<<endl; } }
点赞 评论

相关推荐

02-15 14:18
已编辑
江西工程学院 Java
董春花_:个人建议1. 排版极简化,别花花绿绿的。2.专业技能不必要介绍那么详细。什么熟练熟悉精通没必要。按照语言,工具framework等等这种划分一下就行。3.项目介绍的太泛泛了,非常空洞。你新增了什么功能?修改了什么功能?怎么做的? 4.再做个项目放上去吧。 学历不行就只能拼能力了,先有个班上,然后跳。干就完了
Java求职圈
点赞 评论 收藏
分享
白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务