【hihoCoder】1037 : 数字三角形
2016-07-24 15:35
375 查看
题目: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)
每个房间走出去后都不能回头
样例输入
迭代方式,从下而上
View Code
一个迷宫有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 结果: 28 思路 动态规划 maze[i, j] = max(maze[i-1, j], maze[i-1, j-1]) 源码
迭代方式,从下而上
#include <iostream> using namespace std; int maze[100][100]; int data[100][100]; void dp(int level) { if (level < 0) return; dp(level - 1); for (int room = 0; room <= level; room++) { if (level > 0) { if (room > 0) maze[level][room] = maze[level - 1][room] > maze[level - 1][room - 1] ? maze[level - 1][room] : maze[level - 1][room - 1]; else maze[level][room] = maze[level - 1][room]; } else maze[level][room] = 0; maze[level][room] += data[level][room]; } } int main() { int maxLevel, i = 0, max = 0; cin >> maxLevel; for (i = 0; i < maxLevel; i++) for (int j = 0; j <= i; j++) cin >> data[i][j]; dp(maxLevel - 1); for (i = 0; i < maxLevel; i++) { int tmp = maxLevel - 1; if (max < maze[tmp][i]) max = maze[tmp][i]; } cout << max << endl; return 0; }
View Code
相关文章推荐
- socket原理详解
- Iptables防火墙知识总结
- Python学习笔记17:网络客户端编程
- Java开源Saas开发框架+Activiti流程管理=JSAAS
- vim 常用命令
- Java运行时数据区域学习
- 根据jsonobject中的部分数据更新javabean中对应的属性[PATCH]
- JAVASE总结--01(java 历史历程简述、JDK的安装、用CMD编译运行程序)
- 基于最小二乘法的直线拟合----同济---第六版---下册---125页
- ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
- 【转】Python浅拷贝与深拷贝
- 选择中医 - 养生之道
- 选择中医 - 养生之道
- 使用 jsoup 对 HTML 文档进行解析和操作
- 2012杭州赛区(浙江理工大学)C - Substrings
- 高性能MySQL-Schema与数据类型优化
- 利用枚举得到表单信息
- FatMouse's Speed
- ndcg算法的python实现
- Multiply Strings leetcode