博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[vijos1011]滑雪
阅读量:4555 次
发布时间:2019-06-08

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

暴搜

1 #include
2 #include
3 #include
4 using namespace std; 5 6 int num[505][505]; 7 int Ans=1,n,m; 8 int fx[4]={
0,0,1,-1}; 9 int fy[4]={
1,-1,0,0};10 11 void dfs(int x,int y,int len){12 Ans=max(Ans,len);13 for (int i=0;i<4;i++)14 if (num[x][y]>num[x+fx[i]][y+fy[i]]&&num[x+fx[i]][y+fy[i]]!=-1)15 dfs(x+fx[i],y+fy[i],len+1);16 }17 18 int main(){19 freopen("ski.in","r",stdin);20 freopen("ski.out","w",stdout);21 scanf("%d%d",&n,&m);22 memset(num,-1,sizeof(num));23 for (int i=1;i<=n;i++)24 for (int j=1;j<=m;j++)25 scanf("%d",&num[i][j]);26 for (int i=1;i<=n;i++)27 for (int j=1;j<=m;j++){28 bool is_ok=0;29 for(int t=0;t<=3;t++)30 if (num[i][j]>num[i+fx[t]][j+fy[t]]&&num[i+fx[t]][j+fy[t]]!=-1) is_ok=1;31 if (is_ok==1) dfs(i,j,1); 32 }33 printf("%d",Ans);34 return 0;35 }
View Code

直接搜索无法很好的处理重叠子问题,因此可采用记忆化搜索以减少时间

记忆化搜索

1 #include
2 #include
3 #include
4 using namespace std; 5 6 int f[505][505];//存储从(i,j)出发可滑的最长路径,避免重复搜索 7 int num[505][505]; 8 int fx[4]={
0,0,1,-1}; 9 int fy[4]={
1,-1,0,0};10 11 int dfs(int x,int y){12 int tmp=0;13 if (f[x][y]!=-1) return f[x][y];14 for (int i=0;i<4;i++){15 if (num[x][y]>num[x+fx[i]][y+fy[i]]&&num[x+fx[i]][y+fy[i]]!=-1)16 tmp=max(tmp,dfs(x+fx[i],y+fy[i])+1);17 }18 if (tmp==0) {19 f[x][y]=1;20 return 1;21 }22 f[x][y]=tmp;23 return tmp;24 }25 int main(){26 int ans=1;27 freopen("ski2.in","r",stdin);28 freopen("ski2.out","w",stdout);29 int n,m;30 scanf("%d%d",&n,&m);31 memset(num,-1,sizeof(num));32 memset(f,-1,sizeof(f));33 for (int i=1;i<=n;i++)34 for (int j=1;j<=m;j++)35 scanf("%d",&num[i][j]);36 for (int i=1;i<=n;i++)37 for (int j=1;j<=m;j++)38 ans=max(ans,dfs(i,j));39 printf("%d\n",ans);40 return 0;41 }
View Code

 

转载于:https://www.cnblogs.com/vincent-hwh/p/6056445.html

你可能感兴趣的文章
linux之看门狗 (转)
查看>>
Leetcode 12,13. Interger to Roman, Roman to Integer
查看>>
Python基础练习
查看>>
部署netcore之Linux上 发布.Net Core
查看>>
python学习04之柱形图和热图
查看>>
Python学习 Day5-4 Python3 字典、列表VS字典
查看>>
Python开发【第二十二篇】:Web框架之Django【进阶】
查看>>
win7+vmware +win8 +vs2013 开发winphone 环境配置
查看>>
两个字符串的最长公共子序列的长度
查看>>
基于双向链表的增删改查和排序(C++实现)
查看>>
oracle start with connect by 用法
查看>>
Spring引用Tomcat的 JTA事务
查看>>
客户推广微信小程序的几种方法如下
查看>>
浏览器回流。
查看>>
Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
查看>>
(转)percona的安装、启动、停止
查看>>
第二阶段Sprint7
查看>>
HDU 4399 Query multiset 解法
查看>>
图论算法——最短路系列
查看>>
2291 糖果堆
查看>>