//========================================================================
//TITLE:
// WinCE虚拟串口驱动(二)
//AUTHOR:
// norains
//DATE:
// Saturday 28-March-2009
//Environment:
// WINDOWS CE 5.0
//========================================================================
虚拟串口驱动的完整代码如下:
一般的思考方法是,由特殊情况比如题目给的示例数据入手,分析如何计算辅助数组dp的值,dp[i][j]记录以r[i][j]为顶点向下走到底边可以得到的最大和,dp数组底边的值就是数字三角形底边数字,然后从底向上计算,dp数组的计算方程(即动态规划状态方程)为
dp[i][j] = max(r[i][j] + dp[i+1][j] , r[i][j] + dp[i+1][j+1])
不过该驱动代码是作者量身定做的,像IOControl就简单地实现了几个,其余的因为在实际使用中本人没用到,所以都没实现,只是简单地返回了FALSE。如果有朋友对此有兴趣,并且实际中也使用到,可以自行调用原生函数实现。
最后,是能让驱动正常挂载的注册表设置:
[HKEY_LOCAL_MACHINE/Drivers/Builtin/VirtualSerial]
"Prefix"="VSP"
"Dll"="VirtualSerial.dll"
"Order"=dword:0
"Index"=dword:1
"Map_Port"="COM1:"
| Problem: | | User: |
| Memory: 324K | | Time: 16MS |
| Language: C++ | | Result: Accepted |
题目所求为dp[0][0]
Source Code
可以进一步化简就是 dp[i][j] = r[i][j] + max(dp[i+1][j] , dp[i+1][j+1]);
这题是求数字三角形由顶到底边最大数字和对应的路径,在准备夏令营的时候红皮教材上面有,当时没有学动态规划算法,不是很理解,经过这一阵对算法的学习和POJ训练,总算在10分钟内独立思考AC,其实挺简单,轻变传奇私服,满足最优子结构和无后效性,是经典的动态规划问题。