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

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>
            国产精品久久久久久久浪潮网站 | 亚洲欧美视频一区二区三区| 亚洲国产精品www| 欧美在线一级va免费观看| 亚洲欧美日韩在线高清直播| 欧美亚洲一区二区三区| 久久久久国内| 欧美高清不卡| 一区二区三区www| 欧美一级视频免费在线观看| 久久精品欧美| 欧美人妖在线观看| 国产午夜精品美女视频明星a级| 国内一区二区在线视频观看| 亚洲国产黄色片| 亚洲综合二区| 免费在线播放第一区高清av| 亚洲伦理久久| 久久亚洲高清| 欧美午夜精品久久久久久久| 黄色一区二区在线| 亚洲一区二区三区在线看 | 亚洲人成网站在线播| 99精品久久| 久久国产精品黑丝| 欧美日韩123| 国产一级一区二区| 在线视频你懂得一区| 久久久999精品免费| 亚洲国产一区二区在线| 午夜精品福利在线观看| 欧美国产日韩一区二区在线观看| 国产精品国产精品| 亚洲日本欧美天堂| 久久久久久久综合| 亚洲网站在线看| 欧美激情中文不卡| 樱花yy私人影院亚洲| 亚洲专区一区二区三区| 亚洲第一中文字幕在线观看| 欧美一级艳片视频免费观看| 国产精品r级在线| 999在线观看精品免费不卡网站| 久久久欧美一区二区| 亚洲影院免费观看| 欧美日韩一区二区欧美激情| 亚洲大黄网站| 乱人伦精品视频在线观看| 亚洲欧美影音先锋| 国产精品一级| 亚洲欧美综合国产精品一区| 亚洲乱码国产乱码精品精 | 亚洲午夜极品| 欧美日韩三级视频| 99精品视频免费观看视频| 欧美 日韩 国产在线| 欧美在线黄色| 国内外成人免费激情在线视频网站 | 亚洲一卡久久| 国产精品久久久久久久久久久久 | 欧美激情在线免费观看| 欧美在线亚洲| 韩国美女久久| 久久综合九色综合久99| 久久久国产精品一区| 在线观看欧美视频| 欧美成人a∨高清免费观看| 久久一区二区三区四区| 在线日韩日本国产亚洲| 欧美激情国产日韩精品一区18| 久久婷婷国产综合精品青草| 亚洲电影免费在线 | 亚洲福利专区| 亚洲国产成人91精品| 欧美激情中文不卡| 亚洲综合色婷婷| 亚洲欧美日韩国产中文在线| 国产一区视频网站| 亚洲国产黄色| 国产精品美女久久久久av超清 | 午夜日韩电影| 欧美一区二区三区在线免费观看| 狠狠色香婷婷久久亚洲精品| 欧美高清在线观看| 欧美精品亚洲精品| 亚洲女同同性videoxma| 久久成人免费日本黄色| 亚洲九九爱视频| 亚洲小视频在线观看| 国产专区综合网| 亚洲经典视频在线观看| 国产欧美日韩亚洲| 欧美国产三区| 国产人妖伪娘一区91| 亚洲国产视频一区二区| 国产精品自在欧美一区| 欧美11—12娇小xxxx| 欧美午夜不卡在线观看免费 | 男女视频一区二区| 欧美三级欧美一级| 久久夜色精品国产噜噜av| 欧美日本韩国一区| 久久午夜视频| 国产精品欧美日韩一区| 欧美成人精品影院| 国产欧美91| 亚洲精品乱码久久久久久蜜桃91 | 亚洲欧美日韩天堂一区二区| 久久综合一区二区| 久久不射网站| 欧美亚一区二区| 亚洲电影天堂av| 国产视频一区二区在线观看| 亚洲清纯自拍| 亚洲国产经典视频| 欧美中文在线观看| 亚洲男女毛片无遮挡| 欧美成人午夜影院| 蜜臀av国产精品久久久久| 国产精品久久久久久福利一牛影视| 欧美成人午夜激情| 国外成人在线| 欧美亚洲综合在线| 性做久久久久久免费观看欧美| 欧美精品福利视频| 欧美国产另类| 在线观看欧美精品| 久久久久久久久岛国免费| 久久国产精品亚洲va麻豆| 欧美午夜一区| av成人毛片| 亚洲女人天堂成人av在线| 欧美日韩在线一区二区| 亚洲精品一区久久久久久| 亚洲人精品午夜| 老司机精品导航| 欧美电影免费观看高清| 亚洲国产婷婷香蕉久久久久久| 久久久久久久综合狠狠综合| 久久一二三国产| 136国产福利精品导航网址应用| 久久精品视频一| 欧美大片免费久久精品三p | 欧美综合第一页| 国产综合久久久久久| 久久婷婷综合激情| 欧美激情第4页| 99re热精品| 国产精品久久久久av免费| 亚洲欧美电影院| 免费日韩一区二区| 亚洲精品美女久久7777777| 欧美黄在线观看| 一区二区三区欧美在线| 午夜精品福利在线| 国产主播精品在线| 久热综合在线亚洲精品| 亚洲精品中文在线| 欧美一区二区三区男人的天堂| 国产欧美日韩三级| 老妇喷水一区二区三区| 亚洲蜜桃精久久久久久久| 欧美一区二粉嫩精品国产一线天| 国产亚洲欧美一区| 欧美成人精品三级在线观看 | 亚洲永久精品大片| 免费成人高清| 亚洲午夜久久久久久久久电影网| 国产视频在线一区二区| 欧美3dxxxxhd| 亚洲一区二区三区免费在线观看 | 久久久噜噜噜久噜久久| 亚洲高清影视| 久久gogo国模裸体人体| 亚洲日本va午夜在线影院| 国产精品激情电影| 美女黄毛**国产精品啪啪| 一本色道久久加勒比88综合| 久久全国免费视频| 亚洲午夜国产成人av电影男同| 国产在线不卡| 欧美视频国产精品| 免费成人高清视频| 欧美在线视频a| 宅男在线国产精品| 亚洲国产高清一区| 免费观看日韩av| 久久激情综合网| 亚洲一区二区三区视频| 亚洲精品系列| 亚洲国产天堂久久综合网| 国产日韩欧美高清| 欧美日韩在线直播| 欧美激情在线狂野欧美精品| 久久久久久9| 久久激情一区| 亚洲欧美日韩国产中文| 亚洲午夜影视影院在线观看| 最新成人av网站| 欧美韩国日本综合|