动态规划 问题之数字三角形(正序递推)
2012-08-03 11:44
232 查看
源代码:
#include<iostream>//正序递归出来的数字三角形
using namespace std;
int d[100][100];
int a[100][100];
int n;
int D(int i,int j)
{
if(d[i][j]>=0) return d[i][j];
return d[i][j]=a[i][j]+(i==n?0:D(i+1,j)>?D(i+1,j+1));
}
int main()
{
while(cin>>n)
{
memset(d,-1,sizeof(d));
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
D(i,j);
//d[i][j]=D(i,j);
//cout<<d[i][j]<<endl;
}
cout<<d[1][1]<<endl;
}
}
#include<iostream>//正序递归出来的数字三角形
using namespace std;
int d[100][100];
int a[100][100];
int n;
int D(int i,int j)
{
if(d[i][j]>=0) return d[i][j];
return d[i][j]=a[i][j]+(i==n?0:D(i+1,j)>?D(i+1,j+1));
}
int main()
{
while(cin>>n)
{
memset(d,-1,sizeof(d));
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
{
D(i,j);
//d[i][j]=D(i,j);
//cout<<d[i][j]<<endl;
}
cout<<d[1][1]<<endl;
}
}
相关文章推荐
- 动态规划_数字三角形问题
- 动态规划问题数字三角形的(递归程序)
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题
- 动态规划0/1背包问题和数字三角形
- 动态规划--数字三角形问题
- 经典动态规划问题--数字三角形 POJ--1163
- 经典动态规划基础题-三角形最大和问题
- 动态规划(二)暴力递归的优化之路——数字三角形最大路径和
- Problem A: 动态规划基础题目之数字三角形
- 动态规划_数字三角形
- 069day(动态规划例题:数字三角形和输入输出流相关的类)
- 动态规划___数学三角形问题
- YTU.3134: 动态规划基础题目之数字三角形
- 动态规划_数字三角形
- 动态规划----数字三角形
- NYOJ - 18 - The Triangle(动态规划--数字三角形)
- 算法 -- 数字三角形之动态规划
- 动态规划 数字三角形 poj1163
- OJ-3134 动态规划基础题目之数字三角形
- 动态规划____类数字三角形