青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj3083

Children of the Candy Corn

Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 6055 Accepted: 2640

Description

The cornfield maze is a popular Halloween treat. Visitors are shown the entrance and must wander through the maze facing zombies, chainsaw-wielding psychopaths, hippies, and other terrors on their quest to find the exit.

One popular maze-walking strategy guarantees that the visitor will eventually find the exit. Simply choose either the right or left wall, and follow it. Of course, there's no guarantee which strategy (left or right) will be better, and the path taken is seldom the most efficient. (It also doesn't work on mazes with exits that are not on the edge; those types of mazes are not represented in this problem.)

As the proprieter of a cornfield that is about to be converted into a maze, you'd like to have a computer program that can determine the left and right-hand paths along with the shortest path so that you can figure out which layout has the best chance of confounding visitors.

Input

Input to this problem will begin with a line containing a single integer n indicating the number of mazes. Each maze will consist of one line with a width, w, and height, h (3 <= w, h <= 40), followed by h lines of w characters each that represent the maze layout. Walls are represented by hash marks ('#'), empty space by periods ('.'), the start by an 'S' and the exit by an 'E'.

Exactly one 'S' and one 'E' will be present in the maze, and they will always be located along one of the maze edges and never in a corner. The maze will be fully enclosed by walls ('#'), with the only openings being the 'S' and 'E'. The 'S' and 'E' will also be separated by at least one wall ('#').

You may assume that the maze exit is always reachable from the start point.

Output

For each maze in the input, output on a single line the number of (not necessarily unique) squares that a person would visit (including the 'S' and 'E') for (in order) the left, right, and shortest paths, separated by a single space each. Movement from one square to another is only allowed in the horizontal or vertical direction; movement along the diagonals is not allowed.

Sample Input

2
8 8
########
#......#
#.####.#
#.####.#
#.####.#
#.####.#
#...#..#
#S#E####
9 5
#########
#.#.#.#.#
S.......E
#.#.#.#.#
#########

Sample Output

37 5 5
17 17 9
挺簡單的一個搜索題目,廣搜和深搜都要用
題目意思,有一個迷宮,現在想知道總是沿著迷宮左側墻壁走的能走多少步,沿著迷宮右側墻壁走的能走多少步
最少走多少步能出去
我覺著這個題目關鍵在于如何處理怎樣沿著左右墻壁走
我一開始以為設好總是右拐左拐的方向就行了,結果樣例就不過,最后輸出一看,有個地方一直來回走了,死循環了
這里怎么處理呢?
我也不會,網上看到神一般的代碼
 for (i=xx+1;i>=xx-2;i--)
{
  j=(8+i)&3;//????
}
真心不明白啥意思,等弄懂了再回來寫思路
除了這種方法,還沒想到別的方法,額,糾結了
  1#include<stdio.h>
  2#include<math.h>
  3#include<string.h>
  4#define MAX 45
  5#define MX  16000
  6struct node
  7{
  8    int x,y,d;
  9}
;
 10int w,h,sx,sy,ans1,ans2,ans3;
 11int dx[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
 12int q1;
 13char map[MAX][MAX];
 14short mark[MAX][MAX];
 15int inin(int xx,int yy)
 16{
 17    return xx>=0&&xx<h&&yy>=0&&yy<w;
 18}

 19void init()
 20{
 21    int i,j;
 22    int flag;
 23    flag=0;
 24    scanf("%d%d",&w,&h);
 25    for (i=0;i<h;i++)
 26    {
 27        scanf("%s",&map[i]);
 28        for (j=0;j<w;j++)
 29        if (map[i][j]=='S'&&!flag)
 30        {
 31            sx=i;sy=j;
 32            flag=1;
 33        }

 34    }

 35    for (i=0;i<4;i++)
 36    if (inin(sx+dx[i][0],sy+dx[i][1])&&map[sx+dx[i][0]][sy+dx[i][1]]=='.')
 37    {
 38        q1=i;break;
 39    }

 40}

 41int dfs1(int x,int y,int xx)
 42{
 43    int j,i,nx,ny;
 44    if (map[x][y]=='E')
 45    {
 46        return 1;
 47    }

 48    for (i=xx+1;i>=xx-2;i--)
 49    {
 50        j=(8+i)&3;//????
 51        nx=x+dx[j][0];ny=y+dx[j][1];
 52        if ((inin(nx,ny))&&(map[nx][ny]!='#'))
 53        {
 54            return 1+dfs1(nx,ny,j);
 55        }

 56    }

 57}

 58int dfs2(int x,int y,int xx)
 59{
 60    int j,i,nx,ny;
 61    if (map[x][y]=='E')
 62        return 1;
 63    for (i=xx-1;i<=xx+2;i++)
 64    {
 65        j=(8+i)&3;//????
 66        nx=x+dx[j][0];ny=y+dx[j][1];
 67        if ((inin(nx,ny))&&(map[nx][ny]!='#'))
 68        {
 69            return 1+dfs2(nx,ny,j);
 70        }

 71    }

 72}

 73int bfs()
 74{
 75    int i,j,head,tail,nx,ny;
 76    struct node q[MX],now;
 77    memset(mark,0,sizeof(mark));
 78    head=0;tail=1;
 79    mark[sx][sy]=1;
 80    q[tail].x=sx;q[tail].y=sy;q[tail].d=1;
 81    while (head<tail)
 82    {
 83        head++;
 84        now=q[head];
 85        for (i=0;i<4;i++)
 86        {
 87            nx=now.x+dx[i][0];
 88            ny=now.y+dx[i][1];
 89            if (inin(nx,ny)&&map[nx][ny]!='#'&&!mark[nx][ny])
 90            {
 91                if (map[nx][ny]=='E')
 92                {
 93                    return now.d+1;
 94                }

 95                tail++;
 96                q[tail].x=nx;q[tail].y=ny;q[tail].d=now.d+1;
 97                mark[nx][ny]=1;
 98            }

 99        }

100    }

101}

102void work()
103{
104    int i,j;
105    ans3=bfs();
106    ans1=dfs1(sx,sy,q1);
107    ans2=dfs2(sx,sy,q1);
108}

109int main()
110{
111    int t,ii;
112    scanf("%d",&t);
113    for (ii=1;ii<=t;ii++)
114    {
115        memset(map,0,sizeof(map));
116        init(); 
117        work();
118        printf("%d %d %d\n",ans1,ans2,ans3);
119    }

120    return 0;    
121}

122

posted on 2012-03-08 20:19 jh818012 閱讀(834) 評論(3)  編輯 收藏 引用

評論

# re: poj3083 2012-03-31 20:53 王私江

額,呵呵,看看我的題解
http://www.shnenglu.com/ArcTan/articles/169695.html
  回復  更多評論   

# re: poj3083 2012-03-31 20:57 王私江

嚓,位運算我還是不懂………………
那個(8+i)&3應該就跟我那個循環去找一樣的哈。  回復  更多評論   

# re: poj3083 2012-08-04 21:45 游客

@王私江
(8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)   回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿

文章檔案(85)

搜索

最新評論

  • 1.?re: poj1426
  • 我嚓,,輝哥,,居然搜到你的題解了
  • --season
  • 2.?re: poj3083
  • @王私江
    (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
  • --游客
  • 3.?re: poj3414[未登錄]
  • @王私江
    0ms
  • --jh818012
  • 4.?re: poj3414
  • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
  • --王私江
  • 5.?re: poj1426
  • 評論內容較長,點擊標題查看
  • --王私江
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合网络一区二区| 欧美一区二区三区四区夜夜大片| 亚洲精品久久7777| 欧美在线免费| 亚洲第一精品夜夜躁人人爽| 欧美在线视频观看| 久久久精品午夜少妇| 亚洲国产人成综合网站| 91久久精品网| 欧美日本国产在线| 欧美一区二区三区免费视| 亚洲一卡久久| 亚洲国产mv| 亚洲一区免费看| 好吊色欧美一区二区三区四区 | 亚洲午夜激情免费视频| 亚洲欧美电影院| 亚洲国产精品久久久久婷婷老年 | 欧美激情在线观看| 亚洲人成网站在线观看播放| 中文欧美在线视频| 亚洲国产精品悠悠久久琪琪| 亚洲香蕉视频| 一区二区三区四区五区精品视频| 性欧美在线看片a免费观看| 亚洲欧洲日本国产| 久久久亚洲高清| 久久久蜜臀国产一区二区| 一区二区三区日韩欧美精品| 久久影院午夜论| 欧美一区二区在线视频| 国产精品视频免费一区| 亚洲欧洲综合另类| 亚洲国产小视频在线观看| 欧美一区激情| 裸体丰满少妇做受久久99精品| 欧美日韩亚洲一区在线观看| 亚洲精品免费在线观看| 一区二区欧美激情| 欧美日韩国产精品成人| 日韩亚洲欧美成人| 亚洲综合视频一区| 欧美三级特黄| 亚洲欧美国产va在线影院| 欧美与黑人午夜性猛交久久久| 国产农村妇女毛片精品久久麻豆 | 亚洲日本va午夜在线电影| 久久精品日产第一区二区三区| 久久久精品一区| 亚洲精品久久久久久久久久久久| 每日更新成人在线视频| 亚洲少妇诱惑| 欧美一区二区三区电影在线观看| 国产伦精品一区二区| 在线精品视频在线观看高清 | 国产亚洲午夜| 久久噜噜亚洲综合| 亚洲香蕉网站| 亚洲高清av| 久久久久99精品国产片| 艳女tv在线观看国产一区| 国产啪精品视频| 欧美欧美全黄| 欧美国产综合视频| 欧美一级黄色网| 一区二区三区www| 91久久国产综合久久| 久久午夜国产精品| 欧美一区二区三区免费观看 | 欧美va天堂| 欧美区国产区| 欧美日韩中文| 亚洲成色精品| 久久久久国产精品人| 香蕉久久国产| 午夜精品久久久久久| 欧美一区亚洲二区| 亚洲欧美欧美一区二区三区| 亚洲一区免费视频| 亚洲一区二区三区涩| 一本大道av伊人久久综合| 亚洲精选视频在线| 一区二区三区四区五区视频| 亚洲一区二区三区国产| 午夜精品国产精品大乳美女| 欧美在线你懂的| 午夜在线电影亚洲一区| 亚洲欧美在线播放| 久久视频在线免费观看| 欧美国产一区二区| 欧美激情第六页| 亚洲一区欧美二区| 久久天天躁狠狠躁夜夜av| 欧美v日韩v国产v| 欧美性开放视频| 精品成人一区| 亚洲午夜激情网页| 欧美日韩一级大片网址| 国产精品久久久久久久浪潮网站| 国产欧美综合在线| 亚洲视频中文| 欧美福利电影网| 亚洲欧美日韩国产成人| 欧美激情精品久久久久久蜜臀| 国产麻豆成人精品| 亚洲性av在线| 欧美大片一区二区三区| 欧美在线播放高清精品| 国产精品久久久久9999高清| 亚洲美女av网站| 美国成人直播| 激情国产一区| 久久男女视频| 久久成人国产精品| 狠狠色狠狠色综合系列| 小处雏高清一区二区三区| 日韩亚洲精品视频| 国产精品v日韩精品| 亚洲视频在线二区| 亚洲一区综合| 国产一区 二区 三区一级| 久久久久国色av免费看影院| 欧美一区午夜视频在线观看| 伊人男人综合视频网| 欧美成人一区二区| 欧美日本亚洲韩国国产| 性久久久久久久| 免费人成精品欧美精品| 亚洲麻豆av| 一区二区三区国产| 一区二区欧美日韩| 亚洲第一区色| 老司机免费视频一区二区三区| 亚洲国产综合视频在线观看| 亚洲人成绝费网站色www| 国产精品永久入口久久久| 麻豆久久婷婷| 国产精一区二区三区| 久久久之久亚州精品露出| 中国女人久久久| 国产一区视频观看| 欧美激情精品久久久久久变态| 欧美性久久久| 亚洲高清三级视频| 国产精品乱码人人做人人爱| 欧美福利视频一区| 国产欧美三级| 亚洲剧情一区二区| 国产综合亚洲精品一区二| 亚洲激情亚洲| 亚洲裸体视频| 欧美久久99| 日韩一二三区视频| 亚洲一区免费看| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品小视频| 亚洲一二区在线| 欧美日韩中文字幕日韩欧美| 亚洲黄一区二区三区| 亚洲精品国产精品久久清纯直播| 欧美在线播放一区| 美女啪啪无遮挡免费久久网站| 国内精品久久久久久影视8 | 亚洲日本免费| 亚洲综合色视频| 国产精品高潮呻吟久久av黑人| 亚洲国产老妈| 午夜精品999| 国产一区二区三区久久久久久久久| 亚洲欧美清纯在线制服| 久久久久久精| 一本色道久久综合一区| 国产精品高潮呻吟视频| 久久精品99久久香蕉国产色戒| 久久久中精品2020中文| 亚洲精品综合| 欧美福利视频一区| 一区二区免费看| 午夜精品久久99蜜桃的功能介绍| 亚洲高清久久网| 日韩视频久久| 国产一区99| 国产精品天天摸av网| 免费在线欧美黄色| 一区二区三区精品| 亚洲国产一区二区三区在线播| 亚洲欧美制服另类日韩| 亚洲激情成人| 国产婷婷色综合av蜜臀av| 免费观看成人| 欧美伊人久久| 欧美亚洲免费| 亚洲制服丝袜在线| 日韩一二在线观看| 欧美国产成人在线| 免费永久网站黄欧美| 久久久久久久91| 久久这里有精品视频| 久久色在线播放| 欧美一区二区三区四区夜夜大片|