[ACM] HDU 5024 Wang Xifeng's Little Plot (构造,枚举)

时间:2021-10-31 22:17:16

Wang Xifeng's Little Plot



Problem Description
《Dream of the Red Chamber》(also 《The Story of the Stone》) is one of the Four Great Classical Novels of Chinese literature, and it is commonly regarded as the best one. This novel was created in Qing Dynasty, by Cao Xueqin. But the last 40 chapters of the original
version is missing, and that part of current version was written by Gao E. There is a heart breaking story saying that after Cao Xueqin died, Cao's wife burned the last 40 chapter manuscript for heating because she was desperately poor. This story was proved
a rumor a couple of days ago because someone found several pages of the original last 40 chapters written by Cao. 



In the novel, Wang Xifeng was in charge of Da Guan Yuan, where people of Jia family lived. It was mentioned in the newly recovered pages that Wang Xifeng used to arrange rooms for Jia Baoyu, Lin Daiyu, Xue Baochai and other teenagers. Because Jia Baoyu was
the most important inheritor of Jia family, and Xue Baochai was beautiful and very capable , Wang Xifeng didn't want Jia Baoyu to marry Xue Baochai, in case that Xue Baochai might take her place. So, Wang Xifeng wanted Baoyu's room and Baochai's room to be
located at two ends of a road, and this road should be as long as possible. But Baoyu was very bad at directions, and he demanded that there could be at most one turn along the road from his room to Baochai's room, and if there was a turn, that turn must be
ninety degree. There is a map of Da Guan Yuan in the novel, and redists (In China English, one whose job is studying 《Dream of the Red Chamber》is call a "redist") are always arguing about the location of Baoyu's room and Baochai's room. Now you can solve this
big problem and then become a great redist.
 
Input
The map of Da Guan Yuan is represented by a matrix of characters '.' and '#'. A '.' stands for a part of road, and a '#' stands for other things which one cannot step onto. When standing on a '.', one can go to adjacent '.'s through 8 directions: north, north-west,
west, south-west, south, south-east,east and north-east.



There are several test cases.



For each case, the first line is an integer N(0<N<=100) ,meaning the map is a N × N matrix.



Then the N × N matrix follows.



The input ends with N = 0.
 
Output
For each test case, print the maximum length of the road which Wang Xifeng could find to locate Baoyu and Baochai's rooms. A road's length is the number of '.'s it includes. It's guaranteed that for any test case, the maximum length is at least 2.
 
Sample Input
3
#.#
##.
..#
3
...
##.
..#
3
...
###
..#
3
...
##.
...
0
 
Sample Output
3
4
3
5
 
Source

解题思路:

N * N的矩阵。 走的方向为8个方向,当中' . '表示可走,以下用点表示,' #' 表示不可走,找出一条最长的路径包括几个点。输出点的个数。当中路径的要求是 最多包括一个直角(拐一个弯)。

int dir[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}}   定义方向。 依照 上。左上,右,右下,下,左下,左,左上 的顺序定义,编号为0,1,2,3,4,5,6,7

那么构成直角的两个方向有7对,各自是  0 2,  1 3 。 2  4, 3 5 ,4 6, 5 7 。6 0 。7 1

那么枚举每一个可走的点。求出该点向8个方向分别走的最远距离,然后依照上面的配对,找出一条最长的合法路径。

枚举全然部可走的点,也就得出答案了。

代码:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std; char mp[102][102];
int n;
int dir[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
int ds[8];//一个点每一个方向最长能够走多远
int all[8];//每一个点为直角的拐点两边最长走多远 int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
getchar();
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
scanf("%c",&mp[i][j]);
getchar();
}
int ans=-1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(mp[i][j]=='.')
{
memset(all,0,sizeof(all));
memset(ds,0,sizeof(ds));
for(int k=0;k<8;k++)
{
int x=i,y=j;
while(x>=0&&x<n&&y>=0&&y<n&&mp[x][y]=='.')
{
ds[k]++;//每一个方向上最远走多少
x+=dir[k][0];
y+=dir[k][1];
}
}
for(int i=0;i<8;i++)
{
all[i]=ds[i]+ds[(i+2)%8];//构成直角的两个方向
ans=max(ans,all[i]);
//cout<<"ans"<<ans<<endl;
}
}
}
printf("%d\n",ans-1);
}
return 0;
}

[ACM] HDU 5024 Wang Xifeng&#39;s Little Plot (构造,枚举)的更多相关文章

  1. HDU 5024 Wang Xifeng&amp&semi;&num;39&semi;s Little Plot 搜索

    pid=5024">点击打开链接 Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  2. HDU 5024 Wang Xifeng&&num;39&semi;s Little Plot &lpar;DP&rpar;

    题意:给定一个n*m的矩阵,#表示不能走,.表示能走,让你求出最长的一条路,并且最多拐弯一次且为90度. 析:DP,dp[i][j][k][d] 表示当前在(i, j)位置,第 k 个方向,转了 d ...

  3. HDU 5024 Wang Xifeng&&num;39&semi;s Little Plot(枚举)

    题意:求一个图中只有一个90°拐点的路的最大长度. 分析:枚举每一个为'.'的点,求出以该点为拐点的八种路中的最大长度,再比较所有点,得出最大长度即可. 如上样例,这样是个90°的角... 注意:最多 ...

  4. 2014 网选 5024 Wang Xifeng&&num;39&semi;s Little Plot

    题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...

  5. hdu5024 Wang Xifeng&&num;39&semi;s Little Plot (水

    http://acm.hdu.edu.cn/showproblem.php?pid=5024 网络赛 Wang Xifeng's Little Plot Time Limit: 2000/1000 M ...

  6. hdu 5024 最长的L型

    http://acm.hdu.edu.cn/showproblem.php?pid=5024 找到一个最长的L型,L可以是斜着的 简单的模拟 #include <cstdio> #incl ...

  7. HDU 4911 http&colon;&sol;&sol;acm&period;hdu&period;edu&period;cn&sol;showproblem&period;php&quest;pid&equals;4911&lpar;线段树求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...

  8. KMP(http&colon;&sol;&sol;acm&period;hdu&period;edu&period;cn&sol;showproblem&period;php&quest;pid&equals;1711)

    http://acm.hdu.edu.cn/showproblem.php?pid=1711 #include<stdio.h> #include<math.h> #inclu ...

  9. HDU-4632 http&colon;&sol;&sol;acm&period;hdu&period;edu&period;cn&sol;showproblem&period;php&quest;pid&equals;4632

    http://acm.hdu.edu.cn/showproblem.php?pid=4632 题意: 一个字符串,有多少个subsequence是回文串. 别人的题解: 用dp[i][j]表示这一段里 ...

随机推荐

  1. 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...

  2. Sublime Text 3前端开发常用优秀插件介绍

    . 首页 博客园 联系我 前言:关于Sublime Text 3. Package Control插件管理. Package Control使用方法/安装Emmet插件. Emmet插件. JsFor ...

  3. angularjs filter cut string

    angular.module('App.controllers.MyCtrl', []) .controller('MyCtrl', function (my) {}) .filter('cut', ...

  4. windows编ffmpeg2&period;2&period;4和插件h265

    0.前言 据说新出来了h265的视频,在迅雷看看上面看到的.网上查看了一下简单介绍,貌似h265的视频比h264的视频压缩率要高.并且能做4K的视频. 同一时候看到网上有人试过ffmpeg在编译的时候 ...

  5. 解读经典《C&num;高级编程》第七版 Page38-45&period;核心C&num;&period;Chapter2

    前言 控制流是语言中最基础的部分,我们不谈具体的细节,只讲讲一些关键和有趣的点. 01 流控制 条件语句:if, else if, else if语句的使用非常值得细讲,如何是好的使用习惯.有一点非常 ...

  6. Servlet工作原理解析(tomcat7、嵌入式服务器)

      目录 Servlet 容器Tomcat Servlet 容器的启动过程 Web 应用的初始化工作 Servlet 体系结构 创建 Servlet 对象(如何被加载) 初始化 Servlet(如何被 ...

  7. luogu2336 喵星球上的点名 &lpar;SA&plus;二分答案&plus;树状数组&rpar;

    离散化一下然后把姓名串和询问串都放一起做SA 和bzoj3277串类似地,满足某一询问的后缀(就是和这个询问对应的后缀的LCP>=这个询问长度的后缀)的排名也是一个区间,把这个区间二分出来即可 ...

  8. (研)for循环的一个bug以及3个while循环的快排

    在这个for循环中,只要有一次不满足,这个for循环将break掉 while(p->score>=90&&i<5) count++ //若有一次不满足的话,那么整个 ...

  9. svn知识点

    svn checkout [url] [dir]: 从版本库中检出代码到本地文件夹 svn status :查看当前工作副本的代码变更状态信息 svn diff [file]:比对工作副本与版本库之间 ...

  10. Git学习笔记-精简版

    注意本文参考廖雪博客: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 一:Git ...