博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2571 命运(DP)
阅读量:6124 次
发布时间:2019-06-21

本文共 965 字,大约阅读时间需要 3 分钟。

题意:

中文题

要点:

期末考试考完了,继续刷题。这题就是个简单的DP,多决策分析,可以向右移一格,向下移一格,或是向右移动到当前列的倍数。状态转移方程很容易写出来是:

dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i][j/k]),注意这题有负数,边界条件设为一个较小的负数。

17416416 2016-07-01 13:44:29 Accepted 327MS 1584K G++
#include
#include
#include
using namespace std;int main(){ int dp[25][1005],map[25][1005]; int t, n, m; int i, j, k; scanf("%d", &t); while (t--) { scanf("%d%d", &n,&m); for (i = 1; i <= n; i++) for (j = 1; j <= m; j++) scanf("%d", &map[i][j]); for (i = 0; i <= n; i++) dp[i][0] = -0xfffff; for (i = 0; i <= m; i++) dp[0][i] = -0xfffff; dp[0][1] = dp[1][0] = 0; for(i=1;i<=n;i++) for (j = 1; j <= m; j++) { dp[i][j] = max(dp[i - 1][j], dp[i][j-1]); for (k = 2; k <= m; k++) if (j / k == (double)j / k)//判断k是否为因数 dp[i][j] = max(dp[i][j], dp[i][j / k]); dp[i][j] += map[i][j]; } printf("%d\n", dp[n][m]); } return 0;}

转载于:https://www.cnblogs.com/seasonal/p/10343722.html

你可能感兴趣的文章
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>