本帖最后由 许庭洲 于 2012-8-20 17:13 编辑
从三角形的顶部到底部有很多条不同的路径,对于每条路径,把路径上面的数加起来可以得到一个和,通过动态规划方法找到最大的和。
int[][] myArray = myMethod.GetMyArray();
int[] lastArray = null;
for (int i = myArray.Length; i > 0; i--)
{
int[] arr = myArray[i - 1];
if (lastArray == null)
{
lastArray = arr;
}
else
{
int[] myArr = new int[arr.Length];
for (int j = 0; j < arr.Length; j++)
{
myArr[j] = arr[j] + Math.Max(lastArray[j], lastArray[j + 1]);
}
lastArray = myArr;
}
}
Console.WriteLine("the result = {0}", lastArray[0]); |