做题总结——数字三角形

做题总结——数字三角形

题目

数字三角形 题目描述
数字三角形 输入输出

题意分析:

这道题目就是寻找从上至下数值最大的一条路线(与“杨辉三角”十分类似)

做题思路:

这道题目利用贪心算法肯定是错误的!

先介绍一种解法。这道题目可以利用“杨辉三角”的思路,根据一个上面的元素与下面两个元素的递推公式(在动态规划里面称作状态转移方程),从下至上地解决此问题(详细思路以后再补)

代码实现

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	int n,a[1010][1010],i,j;      //这里地二维数组空间一定要开的足够大
	cin>>n;
	for(i=1;i<=n;i++)
	{
    
    
		for(j=1;j<=i;j++)
		{
    
    
			cin>>a[i][j];
		}
	}
	/*if(n==1)            
	{
		cout<<a[1][1]<<endl;
		return 0;
	}*/
	for(i=n-1;i>=1;i--)              //按照递推公式(状态转移方程)进行实现
	{
    
    
		for(j=1;j<=i;j++)
		{
    
    
			a[i][j]+=max(a[i+1][j],a[i+1][j+1]);
		}
	}
	cout<<a[1][1]<<endl;
}

猜你喜欢

转载自blog.csdn.net/m0_46772594/article/details/108113550