Total Submission(s) : 44 Accepted Submission(s) : 33
对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。<br>
思路:
老师讲过就是从底下网上走,比较去大的,一开始用的递归超时。。改成循环直接存结果就好了
代码:
#include<iostream>
#include<string.h>
using namespace std;
int n;
int dpmap[101][101];
/*int Max(int i,int j)
{
int s1,s2;
if ((i>n) ||(j>i) )return -1;
s1=Max(i+1,j)+dpmap[i][j];
s2=Max(i+1,j+1)+dpmap[i][j];
if( s1>s2 )return s1;
else return s2;
}
*/
int main()
{
int c;
cin>>c;
while(c--)
{
//memset(dpmap,0,sizeof(dpmap));
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<i+1;j++)
cin>>dpmap[i][j];
for(int i=n-1;i>=0;i--)
for(int j=0;j<=i;j++)
dpmap[i][j]+=max(dpmap[i+1][j+1],dpmap[i+1][j]);
cout<<dpmap[0][0]<<endl;
}
return 0;
}