黑马程序员技术交流社区

标题: 求一个算法。 [打印本页]

作者: 张文    时间: 2012-8-20 16:33
标题: 求一个算法。
今天有一个演讲是关于智能游戏开发的,完了有道题大家谁有这个算法。
下列3角形中,获取最大值的串(就是吧3角行的相邻2个点(上下行)串起来,看哪一串最大)
     5
   8 4
  3 6 9
7 2 9 5
结果为 5 + 8 + 6 + 9

求这个3角行有n行时的算法。

作者: 许庭洲    时间: 2012-8-20 17:12
本帖最后由 许庭洲 于 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]);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2