百度首页 | 百度空间
 
查看文章
 
一道简单DP题,zju1245
2008-05-20 15:22

http://acm.zju.edu.cn/show_problem.php?pid=1245

典型的DP,题目不难,锻炼一下DP思维。

分析:

题目要求是在一个三角点阵中(有黑点和白点)找到最大的白三角点阵。

题目提示百三角点阵可能是朝上的。

很显然题目有最优子结构:

       定义f[i][j]表示以点(i,j)为三角形顶点的最大百三角点阵包含点的个数。

则:

f[0][j] = 1,当triangle[0][1] == -

f[0][j] = 0,当triangle[0][1] == #

f[i][j] = 1,当triangle[i-1][j+1] == # && triangle[i][j] == - && i > 0

f[i][j] = min(f[i-1][j] , f[i-1][j+2]) - (f[i-1][j] , f[i-1][j+2]),当triangle[i-1][j+1] == - && triangle[i][j] == - && i > 0

f[i][j] = 0,当 triangle[i][j] == # && i > 0

这是顶点超下的三角统计方式。

f[n-1][1] = 1,当triangle[n-1][1] == '-'

f[n-1][1] = 0,当triangle[n-1][1] == '#'

f[i][j] = 1,当triangle[i+1][j-1] == # && triangle[i][j] == - && i >= 0 && i < n-1

f[i][j] = min(f[i+1][j] , f[i+1][j-2]) - (f[i+1][j] , f[i+1][j-2]),当triangle[i+1][j-1] == - && triangle[i][j] == - && i > 0 && i < n-1

f[i][j] = 0,当 triangle[i][j] == # && i >= 0 && i < n-1

这是顶点朝上的三角统计方式。

有了以上公式,code is easy


类别:阵地 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-05-20 15:54
太深了
over
 
2
2008-05-20 16:29
太深了
over
ps.楼上兄弟不要找我要版权啊……
 
3
2008-05-20 23:24
有帖子说,这题是无聊题……
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu