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个方向之一走一格,并且不能走出矩 ...
随机推荐
- stream分组
1.根据集合元素中的一个属性值分组 Person p1 = new Person("张三", new BigDecimal("10.0"));Person p2 ...
- PHP1.6--数组
一.数组的键值操作函数 1.array_values() 函数作用是返回数组中所有元素的值,只有一个参数,规定传人给定数组,返回一个包含给定数组中所有值的数组,但不保留键名 被返回的数组将使用顺序的数 ...
- vue-i18n 的用法
主要用于网站国际化,开发可以切换多语言的网站 1,安装 npm install vue-i8n 2,在main.js中引入和注册 import VueI18n from 'vue-i18n' impo ...
- dp入门 hdu2059 龟兔赛跑
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- LintCode_100 删除排序数组中的重复数字 ||
题目 跟进“删除重复数字”: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]. C++代码 int rem ...
- 磁力搜索嗅探器装成BT
磁力搜索嗅探器装成BT ague-dht ague-dht 是一个磁力链接嗅探器,它伪装成BT下载客服端,加入DHT网络,嗅探磁力链接.每秒发送1000条请求时,平均3秒收到1次带有infohash的 ...
- YouTube上最受欢迎的十大机器学习视频(最新)
2017-05-04 机器之心 选自KDnuggets 作者:Thuy T. Pham 机器之心编译 参与:微胖.黄小天 虽然 YouTube 有很多不错的机器学习视频,但是很难搞清楚是否值得一看,何 ...
- Codeforces Round #192 (Div. 2) A. Cakeminator【二维字符数组/吃掉cake,并且是一行或者一列下去,但是该行/列必须没有草莓的存在】
A. Cakeminator time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- python 正则表达式常用操作符
- Leetcode703.Kth Largest Element in a Stream数据流中的第K大元素
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...