递归转递推之数字三角形

我觉着递推不错。

1、能发现递推规律的人很厉害。

2、感觉好理解一些。

#include<iostream>
using namespace std;
/*
int MaxSum(int r,int j,int N,int D[100][100],int DMemory[100][100])
{
	if(DMemory[r][j]!=-1)
	{
		return DMemory[r][j];
	}

	if(r==N)
	{
		DMemory[r][j]=D[r][j];
	}
	else
	{
		if(MaxSum(r+1,j,N,D,DMemory)>MaxSum(r+1,j+1,N,D,DMemory))
		{
			DMemory[r][j]=MaxSum(r+1,j,N,D,DMemory)+D[r][j];
		}
		else
		{
			DMemory[r][j]=MaxSum(r+1,j+1,N,D,DMemory)+D[r][j];
		}
	}
	return DMemory[r][j];
}
*/
int main()
{
	int D[100][100];
//	int DMemory[100][100];
	int MaxSum[100][100];
	int N=0;
	cin>>N;
	int i=0,j=0;
	for(i=0;i<N;i++)
	{
		for(j=0;j<=i;j++)
		{
			cin>>D[i][j];
			//DMemory[i][j]=-1;
			MaxSum[i][j]=0;
		}
	}
	//改成递推
	for(i=N-2;i>=0;i--)
	{
		for(j=0;j<=i;j++)
		{
			if((D[i][j]+D[i+1][j])>(D[i][j]+D[i+1][j+1]))
			{
				D[i][j]=D[i][j]+D[i+1][j];
			}
			else
			{
				D[i][j]=D[i][j]+D[i+1][j+1];
			}
		}
	}
	cout<<D[0][0]<<endl;
	return 0;
}
发布了202 篇原创文章 · 获赞 18 · 访问量 74万+

猜你喜欢

转载自blog.csdn.net/nanfeiyannan/article/details/105286208
今日推荐