hdu5024-Wang Xifeng's Little Plot
此题一开始用暴力做,后来发现斜着走的时候其实暴力不太好写,于是改用搜索写了
#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; char a[][]= {};
int down[][]= {};
int up[][]= {}; int cnt[][][]= {};
int n;
int dx[]= {-,,-, };
int dy[]= {-,, ,-};
int dfs(int curx,int cury,int num)
{
if(curx< || cury< || curx>=n || cury>=n)
return ;
int &ans=cnt[curx][cury][num];
if(a[curx][cury]=='#')
return ans=;
return ans=+dfs(curx+dx[num],cury+dy[num],num);
} int getMax()
{
int ans=;
for(int i=; i<n; i++)
for(int j=; j<n; j++)
{
ans=max(ans,down[i][j]+up[i][j]-);
}
return ans;
} int main()
{
freopen("in.txt","r",stdin); while(scanf("%d",&n),n)
{
memset(down,,sizeof down);
memset(up,,sizeof up);
memset(cnt,,sizeof cnt);
for(int i=; i<n; i++)
scanf("%s",a[i]); for(int i=; i<n; i++)
for(int j=; j<n; j++)
{
if(a[i][j]=='#')
{
up[i][j]=down[i][j]=; }
else
{
up[i][j]=down[i][j]=;
if(i!=)
up[i][j]=up[i-][j]+;
if(j!=)
down[i][j]=down[i][j-]+;
}
} int ans=;
ans=max(ans,getMax()); memset(down,,sizeof down);
memset(up,,sizeof up);
for(int i=n-; i>=; i--)
for(int j=n-; j>=; j--)
{
if(a[i][j]=='#')
{
up[i][j]=down[i][j]=;
}
else
{
up[i][j]=down[i][j]=;
if(i!=n-)
up[i][j]=up[i+][j]+;
if(j!=n-)
down[i][j]=down[i][j+]+;
}
} ans=max(ans,getMax()); //---------------------------
memset(down,,sizeof down);
memset(up,,sizeof up);
for(int i=; i<n; i++)
for(int j=n-; j>=; j--)
{
if(a[i][j]=='#')
{
up[i][j]=down[i][j]=;
}
else
{
up[i][j]=down[i][j]=;
if(i!=)
up[i][j]=up[i-][j]+;
if(j!=n-)
down[i][j]=down[i][j+]+;
}
} ans=max(ans,getMax());
//-------------------------------
memset(down,,sizeof down);
memset(up,,sizeof up);
for(int i=n-; i>=; i--)
for(int j=; j<n; j++)
{
if(a[i][j]=='#')
{
up[i][j]=down[i][j]=;
}
else
{
up[i][j]=down[i][j]=;
if(i!=n-)
up[i][j]=up[i+][j]+;
if(j!=)
down[i][j]=down[i][j-]+;
}
} ans=max(ans,getMax());
//-------------------------------------------------- for(int i=; i<n; i++)
for(int j=; j<n; j++)
{
for(int num=; num<; num++)
{
dfs(i,j,num);
}
} for(int i=; i<n; i++)
for(int j=; j<n; j++)
{
ans=max(ans,cnt[i][j][]+cnt[i][j][]-);
ans=max(ans,cnt[i][j][]+cnt[i][j][]-);
ans=max(ans,cnt[i][j][]+cnt[i][j][]-);
ans=max(ans,cnt[i][j][]+cnt[i][j][]-);
} cout<<ans<<endl;
}
return ;
}
hdu5024-Wang Xifeng's Little Plot的更多相关文章
- hdu5024 Wang Xifeng's Little Plot (水
http://acm.hdu.edu.cn/showproblem.php?pid=5024 网络赛 Wang Xifeng's Little Plot Time Limit: 2000/1000 M ...
- HDU 5024 Wang Xifeng's Little Plot (DP)
题意:给定一个n*m的矩阵,#表示不能走,.表示能走,让你求出最长的一条路,并且最多拐弯一次且为90度. 析:DP,dp[i][j][k][d] 表示当前在(i, j)位置,第 k 个方向,转了 d ...
- 2014 网选 5024 Wang Xifeng's Little Plot
题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...
- HDU 5024 Wang Xifeng's Little Plot(枚举)
题意:求一个图中只有一个90°拐点的路的最大长度. 分析:枚举每一个为'.'的点,求出以该点为拐点的八种路中的最大长度,再比较所有点,得出最大长度即可. 如上样例,这样是个90°的角... 注意:最多 ...
- HDU 5024 Wang Xifeng's Little Plot 搜索
pid=5024">点击打开链接 Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others) Memory ...
- [ACM] HDU 5024 Wang Xifeng's Little Plot (构造,枚举)
Wang Xifeng's Little Plot Problem Description <Dream of the Red Chamber>(also <The Story of ...
- 2014 ACM/ICPC Asia Regional Guangzhou Online
Wang Xifeng's Little Plot http://acm.hdu.edu.cn/showproblem.php?pid=5024 预处理出每个点八个方向能走的最远距离,然后枚举起点,枚 ...
- The 2014 ACMICPC Asia Regional Guangzhou Online
[A]-_-/// [B]线段树+位运算(感觉可出) [C]地图BFS,找最长线 [D]地图BFS,加上各种复杂情况的最短路-_- [E]-_-/// [F]三分+圆与线段的交点,计算几何 [G]-_ ...
- matlab画图函数plot()/set/legend
简单plot()/legend/XY轴范围axis 除了坐标轴信息外还可以添加其它的信息,如所画曲线的信息等:测试代码如下 x=0:pi/20:2*pi; y1=sin(x); y2=cos(x); ...
随机推荐
- css入门之css选择器
CSS选择器 css的选择器最常用的是class选择器,定义方式如下. <!DOCTYPE html> <html lang="en"> <head& ...
- c#序列化反序列化工具(json,binary,xml)
using System; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Bina ...
- java对象的内存分配
(1) 寄存器(register).这是最快的保存区域,这是主要由于它位于处理器内部.然而,寄存器的数量十分有限,所以寄存器是需要由编译器分配的.我们对此没有直接的控制权,也不可能在自己的程序里找到寄 ...
- [Git] Automatically running tests before commits with ghooks
Wouldn't it be nice if everyone ran the tests before committing code? With ghooks, you can automatic ...
- macos10.8.5原版系统dmg转iso
网上非常多资料说使用UltraISO打开macos10.8.5, 将InstallESD.dmg提取出来, 然后再用UltraISO打开InstallESD.dmg,点转换格式, 选择iso, 然后用 ...
- 如何解决svn图标不显示呢?
svn图标不显示解决 确保设置正确: 右键->TortoiseSVN->setting->Icon Overlays->Status cache->default/She ...
- Java基础知识强化35:String类之String的其他功能
1. String类的其他功能: (1)替换功能: String replace(char old, char new) String replace(String old,String new) ( ...
- jquery之营销系统(补偿记录)
var appPath = getAppPath(); $(function(){ $("#opreateHtml").window("close"); $(& ...
- 网页CSS2
列表与方块 width , hight (top, bottom ,left , right) 只有在决对坐标下才起作用 下面的使用与 ol ul list-style:none // 取消序号 ...
- less样式表
LESS是一种由Alexis Sellier设计的动态层叠样式表语言.受Sass所影响,同时也影响了Sass的新语法:SCSS.[2] LESS是开源的,其第一个版本由Ruby写成,但在后续的版本当 ...