当前位置: 首页 > news >正文

poj 1088(dfs+dp)

这道题本来可以用dfs做,但这样会超时,因为需要对每一个点进行dfs求从该点出发的最长距离,但我们在对一个点dfs的过程中,往往可以求到很多点,所以对每一个点dfs实际上是多余的,所以我们在dfs的基础上加上dp就可以得到答案。

#include<iostream>
#include<string.h>
#include<string>
#include<sstream>
#include<vector>
#include<deque>
#include<map>
#include<algorithm>
#include<iomanip>
#include<math.h>
#include<set>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

int grid[105][105];
int len[105][105];
int r, c;
int dir[4][2] = { 0,1,0,-1,1,0,-1,0 };
int dp(int a,int b)
{
	if (len[a][b])
		return len[a][b];
	int maxlen = 0;
	for (int i = 0; i < 4; i++)
	{
		int x = a + dir[i][0];
		int y = b + dir[i][1];
		int ans;
		if (x<1 || x>r || y<1 || y>c)
		{
			continue;
		}
		if (grid[x][y] < grid[a][b])
		{
			ans = dp(x, y);
			maxlen = max(ans, maxlen);
		}
	}
	len[a][b] = maxlen + 1;
	return maxlen+1;
}
int main()
{
	while (cin >> r >> c)
	{
		memset(len, 0, sizeof(len));
		for (int i = 1; i <= r; i++)
			for (int j = 1; j <= c; j++)
				cin >> grid[i][j];
		int maxlen = 0;
		for (int i = 1; i <= r; i++)
		{
			for (int j = 1; j <= c; j++)
			{
				int ret = dp(i, j);
				maxlen = max(ret, maxlen);
			}
		}
		cout << maxlen << endl;
	}
	return 0;
}

  

转载于:https://www.cnblogs.com/QingFengDaHui/p/10453649.html

相关文章:

  • flutter的key在widget list的作用以及必要性
  • 深入 Nginx 之配置篇
  • 干货!手把手教你打造自己的seo生态资源,让排名不在是梦想
  • Mayor's posters(线段树+离散化)
  • yum安装openstack
  • Python学习笔记_读Excel去重
  • [LOJ161] 仙人掌计数
  • 打造性感好用的 VS Code 编辑器
  • 性能测试性能分析
  • JAVA 集合(个人总结)
  • 华为云:实现高可用的负载均衡web集群
  • 又火了,小米MIX 3在堪称设计界的奥斯卡荣获2019德国iF设计奖
  • 排序(1):冒泡排序
  • Spring boot (四) 配置文件讲解
  • Mac 上flink的安装与启动
  • 【面试系列】之二:关于js原型
  • Apache Zeppelin在Apache Trafodion上的可视化
  • create-react-app项目添加less配置
  • Facebook AccountKit 接入的坑点
  • Go 语言编译器的 //go: 详解
  • HTML-表单
  • iOS 颜色设置看我就够了
  • java中的hashCode
  • magento2项目上线注意事项
  • PHP 的 SAPI 是个什么东西
  • Redis 懒删除(lazy free)简史
  • RxJS: 简单入门
  • vue学习系列(二)vue-cli
  • 阿里云Kubernetes容器服务上体验Knative
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 前端
  • 树莓派 - 使用须知
  • 学习笔记TF060:图像语音结合,看图说话
  • 运行时添加log4j2的appender
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # Apache SeaTunnel 究竟是什么?
  • # Maven错误Error executing Maven
  • #include
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)事件处理——(7)简单事件(Simple events)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (算法)N皇后问题
  • *上位机的定义
  • .describe() python_Python-Win32com-Excel
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net6使用WebSocket与前端进行通信
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • /bin、/sbin、/usr/bin、/usr/sbin
  • :O)修改linux硬件时间