A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张文 中级黑马   /  2012-8-20 16:33  /  1279 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 许庭洲 于 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]);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马