UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
B - 邱老师降临小行星
Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65536/65535KB (Java/Others)
人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个N行M列平面的小行星。对于每一个着陆地点,邱老师总喜欢带着妹子这样走:假设着陆地点为(r0, c0),那么他们下一步只能选择相邻格点,向四周走,即(r0–1, c0), (r0 + 1, c0), (r0, c0–1)或(r0, c0 + 1)。之后的路程必须严格按照右转-前进-左转-前进-右转......的道路前行。但是由于邱老师很心疼妹子,所以崎岖的山脉不可以到达。当不能前进时必须要原路返回。如下图。

问,邱老师在哪里着陆可以游历这颗星球最多的土地,输出可能访问到的最多的格点数。
Input
第一行一个整数T, 0<T≤20,表示输入数据的组数。
对于每组数据,第一行有两个整数N和M,分别表示行数和列数,0<N,M≤1000
下面N行,每行M个字符(0或1)。
1代表可到达的地方,0代表山脉(不可到达的地方)。
Output
对于每一组数据,输出一个整数后换行,表示选择某点着陆后,可能访问到的最多的格点数。
Sample input and output
| Sample Input | Sample Output |
|---|---|
2 |
10 |
解题报告:
这是一道记忆化搜索题目,每个格子对应4种形态,每种形态又有2种形态,故共有8种状态.
f(i,j,k,m) -> 在格子(i,j) 时对应形态 k 的第 m 种状态最远可以走X步
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e3 + ;
int maxarrive[maxn][maxn][][],r,c;
bool pass[maxn][maxn]; bool inmap(int x,int y)
{
if (x > r || x <= || y > c || y <= || !pass[x][y])
return false;
return true;
} /*
你拉着提琴,优雅美丽,眼神却逃避
*/ int dfs(int x,int y,int turn,int st)
{
if (maxarrive[x][y][turn][st] != -)
return maxarrive[x][y][turn][st];
int &ans = maxarrive[x][y][turn][st];
if (!inmap(x,y))
return ans = ;
if (turn == )
{
if (st == )
ans = dfs(x,y+,,) + ;
else
ans = dfs(x-,y,,) + ;
}
else if (turn == )
{
if (st == )
ans = dfs(x+,y,,) + ;
else
ans = dfs(x,y+,,) + ;
}
else if (turn == )
{
if (st == )
ans = dfs(x,y-,,) + ;
else
ans = dfs(x+,y,,) + ;
}
else if (turn == )
{
if (st == )
ans = + dfs(x-,y,,);
else
ans = + dfs(x,y-,,);
}
return ans;
} int main(int argc,char *argv[])
{
int Case;
scanf("%d",&Case);
while(Case--)
{
memset(pass,true,sizeof(pass));
memset(maxarrive,-,sizeof(maxarrive));
scanf("%d%d",&r,&c);
char buffer[];
for(int i = ; i <= r ; ++ i)
{
scanf("%s",buffer);
for(int j = ; j < c ; ++ j)
if (buffer[j] == '')
pass[i][j+] = false;
}
int ans = ;
for(int i = ; i <= r ; ++ i)
for(int j = ; j <= c ; ++ j)
{
if (pass[i][j])
{
int newans = ;
newans += dfs(i-,j,,); // up
newans += dfs(i+,j,,); // down
newans += dfs(i,j-,,); // left
newans += dfs(i,j+,,); // right
ans = max(ans,newans);
}
}
printf("%d\n",ans);
}
return ;
}
UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>的更多相关文章
- UESTC_韩爷的梦 2015 UESTC Training for Search Algorithm & String<Problem N>
N - 韩爷的梦 Time Limit: 200/100MS (Java/Others) Memory Limit: 1300/1300KB (Java/Others) Submit Stat ...
- UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>
D - 基爷的中位数 Time Limit: 5000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Su ...
- UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>
J - 全都是秋实大哥 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Subm ...
- UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>
E - 吴队长征婚 Time Limit: 10000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>
C - 基爷与加法等式 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>
A - 王之迷宫 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>
M - Palindromic String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 128000/128000KB (Java ...
- UESTC_Ferris Wheel String 2015 UESTC Training for Search Algorithm & String<Problem L>
L - Ferris Wheel String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 43000/43000KB (Java/ ...
随机推荐
- jquery IE6 select.val() bug报错解决办法
原文地址:http://hi.baidu.com/kinghmx/item/395dbac3261292dcef183b52 最近在写一个页面,在出了ie6外的所有浏览器中都正常(ie7,8,9, ...
- 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅰ
许多应用程序都需要处理有序的元素,但不一定要求他们全部有序,或者是不一定要以此就将他们排序.很多情况下我们会手机一些元素,处理当前键值最大的元素,然后再收集更多的元素,再处理当前键值最大的元素.如此这 ...
- PHP设计模式笔记一:准备工作 -- Rango韩老师 http://www.imooc.com/learn/236
一.编程字体选择 1.选择等宽字体 包括Courier New ,Consolas,Source Code Pro(推荐) 2.环境搭建(建议easyPHP) 二.开发符合PSR规范的基础框架 PSR ...
- Bootstrap在线编辑器简单分享
Bootstrap 已经使响应式网站开发变得简单很多. 但是如果你不必手动写全部代码,事情会如何呢? 如果你可以自由地选择你想要使用的Bootstrap 组件.并可以把它们拖拽到画布中,事情会如何呢? ...
- 开机后将sim/uim卡上的联系人写入数据库
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51 ...
- POJ 1300 欧拉通路&欧拉回路
系统的学习一遍图论!从这篇博客开始! 先介绍一些概念. 无向图: G为连通的无向图,称经过G的每条边一次并且仅一次的路径为欧拉通路. 如果欧拉通路是回路(起点和终点相同),则称此回路为欧拉回路. 具有 ...
- [Immutable.js] Working with Subsets of an Immutable.js Map()
Immutable.js offers methods to break immutable structures into subsets much like Array--for instance ...
- [Regular Expressions] Match the Same String Twice
Regular Expression Backreferences provide us a method to match a previously captured pattern a secon ...
- Coding.net代码托管空间申请与使用-安装并运行WordPress博客
参考: http://www.freehao123.com/coding-net/ Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社 ...
- Java中的编码格式
Java中的编码 gbk编码 中文占用2个字节,英文占1个字节; utf-8编码 中文占用3个字节.,英文占用1个字节; Java是双字节编码 (utf-16be) utf -16be 中文占2个字节 ...