UVa 10285【搜索】
哇,竟然没超时!看网上有人说是记忆化搜索,其实不太懂是啥。。。感觉我写的就是毫无优化的dfs暴力。。。。。。。
建立一个坐标方向结构体数组,每个节点dfs()往下搜就好了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MOD 100000
using namespace std;
const int maxn = ;
struct pos {
int x, y;
};
pos dir[] = { ,,-,,,,,- };
int Map[maxn][maxn];
int vis[maxn][maxn] = { };
int r, c, ans; bool in(int x, int y, int val)
{
if (Map[x][y]<val && !vis[x][y] && x >= && x <= r&&y >= && y <= c) return true;
return false;
} void dfs(int x, int y, int lev, int dep)
{
ans = max(ans, dep);
for (int i = ; i<; i++) {
int nowx=x, nowy=y;
nowx += dir[i].x, nowy += dir[i].y;
if (in(nowx, nowy, lev)) {
vis[nowx][nowy] = ;
int t = dep + ;
dfs(nowx, nowy, Map[nowx][nowy], t);
vis[nowx][nowy] = ;
}
}
return;
} int main()
{
int N;
cin >> N;
char s[];
while (N--)
{
scanf("%s", s);
scanf("%d%d", &r, &c);
memset(vis, , sizeof(vis));
for (int i = ; i <= r; i++)
for (int j = ; j <= c; j++) {
cin >> Map[i][j];
}
ans = ;
for(int i=;i<=r;i++)
for (int j = ; j <= c; j++) {
vis[i][j] = ;
dfs(i, j, Map[i][j], );
vis[i][j] = ;
}
cout << s << ": " << ans << endl;
}
return ;
}
UVa 10285【搜索】的更多相关文章
- UVa 10285 Longest Run on a Snowboard - 记忆化搜索
记忆化搜索,完事... Code /** * UVa * Problem#10285 * Accepted * Time:0ms */ #include<iostream> #includ ...
- UVA 10285 Longest Run on a Snowboard(记忆化搜索)
Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...
- UVa 10285 Longest Run on a Snowboard【记忆化搜索】
题意:和最长滑雪路径一样, #include<iostream> #include<cstdio> #include<cstring> #include <c ...
- UVA 10285 - Longest Run on a Snowboard (记忆化搜索+dp)
Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 seconds Memor ...
- UVA - 10285 Longest Run on a Snowboard(最长的滑雪路径)(dp---记忆化搜索)
题意:在一个R*C(R, C<=100)的整数矩阵上找一条高度严格递减的最长路.起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外.矩阵中的数均为0~100. 分析:dp[x ...
- UVa 10285 - Longest Run on a Snowboard
称号:给你一个二维矩阵,找到一个点.每一个可以移动到的位置相邻的上下,求最长单调路径. 分析:贪婪,dp.搜索. 这个问题是一个小样本,我们该怎么办. 这里使用贪心算法: 首先.将全部点依照权值排序( ...
- 【Uva 10285】Longest Run on a Snowboard
[Link]: [Description] 在一个r*c的格子上; 求最长的下降路径; [Solution] 记忆化搜索; f[x][y]表示从(x,y)这个格子往下还能走多远; 因为是严格递增,所以 ...
- UVA - 10285 Longest Run on a Snowboard (线性DP)
思路:d[x][y]表示以(x, y)作为起点能得到的最长递减序列,转移方程d[x][y] = max(d[px][py] + 1),此处(px, py)是它的相邻位置并且该位置的值小于(x, y)处 ...
- UVa 10285 最长的滑雪路径(DAG上的最长路)
https://vjudge.net/problem/UVA-10285 题意: 在一个R*C的整数矩阵上找一条高度严格递减的最长路.起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩 ...
随机推荐
- PHP搜索优化 sphinx 实战
环境:win7 64 wamp 解压sphinx安装包后,简历如下结构.注意,conf目录是我的配置文件目录 在conf目录下,简历newdefend.conf文件,配置内容如下 # 配置数据源 so ...
- 20190902+0903合集-NOIP模拟
一直没时间写QwQ 于是补一下. Day 1 晚饭吃的有点恶心…… $1s\,2s\,5s$ 还开 -O2 ?? 有点恐怖. T1 猛的一想: 把外面设成一个点, 向入口连一条权为排队时间的边 从出口 ...
- Functional Programming Contest - September'14
比赛链接 A题 -- Enter your code here. Read input from STDIN. Print output to STDOUT main = do x <- get ...
- java 判断数据类型和方法
java 判断数据类型和方法 .我从SOLR查询中获取一个数据一,已知数据类型,是string或者int 或者其他 .我有一个方法(set方法),只有一个参数,但是我不知道参数的数据类型,可能是str ...
- 关于JavaScript的一些不得不知道的事儿
1.JavaScript不区分整数和浮点数,统一用Number表示. 2.NaN这个特殊的Number与所有其他值都不相等,包括它自己: NaN===NaN; //false 唯一能判断NaN的方法是 ...
- 获取电脑名和IP地址
private string GetHostNameAndIP( bool isv4Orv6) { string HostName = Dns.GetHostN ...
- Yann LeCun清华演讲:深度学习与人工智能的未来
2017年3月22日下午,Facebook人工智能研究院院长.纽约大学终身教授Yann LeCun在清华大学大礼堂为校内师生以及慕名而来的业内人士呈现了一场主题为<深度学习与人工智能的未来(De ...
- Collection Iterator 迭代器
Collection c=new ArrayList(); c.add(123); //迭代器遍历集合 Iterator i=c.Iterator(); while(i.hasNext()) { Sy ...
- POJ2082 Terrible Sets
Terrible Sets Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5067 Accepted: 2593 Des ...
- 【转】MySQL的btree索引和hash索引的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-T ...