码迷,mamicode.com
首页 > 其他好文 > 详细

【hihoCoder】1037 : 数字三角形

时间:2016-07-24 16:28:00      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

题目http://hihocoder.com/problemset/problem/1037

  • 一个迷宫有n层,第i层有i个房间
  • 从第i层的第i个房间(i, i)可以走到第i+1层的第i个房间或第i+1房间(i+1, i)/(i+1, i+1)
  • 每个房间走出去后都不能回头

样例输入

5 //迷宫的层数
2
6 4
1 2 8
4 0 9 6
6 5 5 3 6
思路
动态规划
maze[i, j] = max(maze[i-1, j], maze[i-1, j-1])

源码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 static int maze[100][100];//存储到达每一个房间收集到的最多券
 5 static int data[100][100];//存储每一个房间的券
 6 
 7 int main()
 8 {
 9     int maxLevel, i = 0, max = 0;
10     cin >> maxLevel;
11     
12     for (i = 0; i < maxLevel; i++)
13         for (int j = 0; j <= i; j++)
14             cin >> data[i][j];
15     //由低层到高层计算
16     maze[0][0] = data[0][0];
17     for (int i = 1; i < maxLevel; i++)
18     {
19         for (int j = 0; j <= i; j++)
20         {
21             if (j > 0 && maze[i - 1][j] < maze[i - 1][j - 1])
22                 maze[i][j] = maze[i - 1][j - 1];
23             else
24                 maze[i][j] = maze[i - 1][j];
25             maze[i][j] += data[i][j];
26         }
27     }
28     //找出最后一层中券最多的房间
29     for (i = 0; i < maxLevel; i++)
30     {
31         int tmp = maxLevel - 1;
32         if (max < maze[tmp][i])
33             max = maze[tmp][i];
34     }
35     cout << max << endl;
36     return 0;
37 }

 

【hihoCoder】1037 : 数字三角形

标签:

原文地址:http://www.cnblogs.com/coolqiyu/p/5700899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!