http://acm.hdu.edu.cn/showproblem.php?pid=2084
用递归的方法实现动态规划,状态转移方程。
效率低下,重复计算了好多!
//不能AC
#include <iostream>
using namespace std;
int a[110][110];
int d(int i,int j,int n){
return a[i][j]+(i==n?0:d(i+1,j,n)>?d(i+1,j+1,n));
}
int main()
{
int N;
cin>>N;
for(int i=1;i<=N;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
cout<<d(1,1,N);
return 0;
}//如果数据稍大,就会耗时很长!
下面有两个解决方法(均通过AC):
方法一:
下面用递推的方法,从下往上计算,只计算一次,不会重复计算,不会超时
#include <iostream>
using namespace std;
int a[110][110];
int d[110][110];
int main()
{
int C;
cin>>C;
while(C--)
{
int n;