【算法】数字三角形

【算法】数字三角形_第1张图片

 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

提示:

因为左右下走的总次数之差不能超过1,所以只能2左2右或2右2左,可取的数由下图可得:

如无此条件限制,还可3左1右、3右1左、4右0左、4左0右,

【算法】数字三角形_第2张图片

#include
using namespace std;
int main()
{
	int n;
	int a[200][200]={0}, c[200][200]={0};
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			cin >> a[i][j];
		}
	}
	c[0][0] = a[0][0];
	for (int i = 1; i 

你可能感兴趣的:(蓝桥杯,算法,c++,学习方法,蓝桥杯,青少年编程)