博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1078 dp(递推)+搜索
阅读量:5076 次
发布时间:2019-06-12

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

题目链接:

题意:老鼠从(1.1)点出发,每次最多只能走K步,而且下一步走的位置的值必须必当前值大。求这些位置和的最大值。

思路:用搜索逐步找每个点能到达的最大值,也是子最优解到整体的最优解,dp思想。

下面AC代码:

#include
#include
#include
#include
#include
using namespace std;int to[4][2]= {
{
1,0},{-1,0},{
0,-1},{
0,1}};int n,k;int mp[105][105];int dp[105][105];int dfs(int x,int y){ int maxx=0,ans; if(dp[x][y]==0) { for(int i=1; i<=k; i++) { for(int j=0; j<4; j++) { int xx=x+to[j][0]*i; int yy=y+to[j][1]*i; if(xx>=1 && xx<=n && yy>=1 && yy<=n && mp[xx][yy]>mp[x][y]) { ans=dfs(xx,yy); maxx=max(maxx,ans); } } } dp[x][y]=mp[x][y]+maxx; } return dp[x][y];}int main(){ while(scanf("%d%d",&n,&k)==2) { if(n==-1 && k==-1) break; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) scanf("%d",&mp[i][j]); memset(dp,0,sizeof(dp)); printf("%d\n",dfs(1,1)); } return 0;}

 

转载于:https://www.cnblogs.com/a-clown/p/5971447.html

你可能感兴趣的文章
$POST数组论证($GET || $COOKIE || $REQUEST 同理)
查看>>
浏览器因cookie设置HttpOnly标志引起的安全问题
查看>>
TLS学习总结
查看>>
Nessus的安装/激活/更新
查看>>
SpringMVC的页面几种返回方式
查看>>
OpenCV中OpenMP的使用
查看>>
Android开发学习之路--UI之初体验
查看>>
Runtime 异常和Checked异常
查看>>
iexpress
查看>>
前端 获取项目根路径的四种方式
查看>>
统计操作耗时的类
查看>>
object类
查看>>
4我的第一个博客
查看>>
iOS中文API之UITouch详解
查看>>
Xamarin.Forms XAML控件的公共属性
查看>>
jdbc防止sql注入-PreparedStatement
查看>>
线段树超级大模版
查看>>
fn标签常用方法使用说明
查看>>
svn 如果遇到an unversioned directory of the same name already exists的解决办法
查看>>
寒假随笔(开启程序设计大佬模式)
查看>>