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

posts - 3,  comments - 1,  trackbacks - 0
這題沒把我弄瘋了.一個小時寫完,改了2個小時...題目給的數據太弱了,需要自己寫一些數據來驗證...在這里給大家提供些數據

題目
Maze
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 1205 Accepted: 399

Description

Acm, a treasure-explorer, is exploring again. This time he is in a special maze, in which there are some doors (at most 5 doors, represented by 'A', 'B', 'C', 'D', 'E' respectively). In order to find the treasure, Acm may need to open doors. However, to open a door he needs to find all the door's keys (at least one) in the maze first. For example, if there are 3 keys of Door A, to open the door he should find all the 3 keys first (that's three 'a's which denote the keys of 'A' in the maze). Now make a program to tell Acm whether he can find the treasure or not. Notice that Acm can only go up, down, left and right in the maze.

Input

The input consists of multiple test cases. The first line of each test case contains two integers M and N (1 < N, M < 20), which denote the size of the maze. The next M lines give the maze layout, with each line containing N characters. A character is one of the following: 'X' (a block of wall, which the explorer cannot enter), '.' (an empty block), 'S' (the start point of Acm), 'G' (the position of treasure), 'A', 'B', 'C', 'D', 'E' (the doors), 'a', 'b', 'c', 'd', 'e' (the keys of the doors). The input is terminated with two 0's. This test case should not be processed.

Output

For each test case, in one line output "YES" if Acm can find the treasure, or "NO" otherwise.

Sample Input

4 4
S.X.
a.X.
..XG
....
3 4
S.Xa
.aXB
b.AG
0 0

Sample Output

YES
NO
 
數據:
5 5
S....
XXAXa
GX..X
.X...
.....

20 20
S..................a
aXXXXXXXXXXAXXXXXXX.
.X........bb......X.
.XbXXXXXXXXXXXXXX.X.
.X.X.....c......X.X.
aXbX.XXXXXXXXXX.X.X.
.X.X.X........X.X.X.
.X.X.X.XDXXXX.X.X.X.
.X.X.X.X..XXX.X.X.X.
.X.X.X.X.XG.X.X.X.X.
.X.XcX.X.XXEX.CeX.X.
.X.X.X.X.e..X.X.X.X.
.X.X.X.XXXXXX.X.X.X.
.X.X.X........X.X.X.
.X.X.XXXXXXXXXX.X.X.
.X.X..c.........X.X.
.X.XXXXXXXBXXXXXX.X.
.X........b.......X.
.XXXXXXXXXXXXXXXXXX.
.d..e...a........a..
主要思想,先找鑰匙..搜索一遍,得到能找到的鑰匙,然后開門.把能開的門都打開..打開門之后再找鑰匙,然后在開門.
直到找到G..
 
代碼如下:

Source Code

Problem: 2157 User: luoguangyao
Memory: 276K Time: 0MS
Language: C++ Result: Accepted
  • Source Code
      1#include <iostream>
      2
      3using namespace std;
      4
      5int m;
      6int n;
      7char map[22][22];
      8int allkey[6= {0};
      9int key[6= {0};
     10int mark[22][22= {0};
     11int mark2[22][22= {0};
     12int markkey[22][22= {0};
     13int lock = 1;
     14int kk = 0;
     15
     16void FindKey(int x,int y)
     17{
     18    if ((map[x][y] >= 'a'&& map[x][y] <= 'e')
     19            && markkey[x][y] != 1)
     20    {
     21        key[map[x][y] - 'a']++;
     22
     23        markkey[x][y] = 1;
     24    }

     25
     26    mark2[x][y] = 1;
     27
     28    if (mark2[x + 1][y] != 1 && x + 1 < m && map[x + 1][y] != 'X' && map[x + 1][y] != 'A' && map[x + 1][y] != 'B' 
     29        && map[x + 1][y] != 'C' && map[x + 1][y] != 'D' && map[x + 1][y] != 'E')
     30    {
     31        FindKey(x + 1 , y);
     32    }

     33
     34    if (mark2[x - 1][y] != 1 && x - 1 >= 0 && map[x - 1][y] != 'X' && map[x - 1][y] != 'A' && map[x - 1][y] != 'B'
     35        && map[x - 1][y] != 'C' && map[x - 1][y] != 'D' && map[x - 1][y] != 'E')
     36    {
     37        FindKey(x - 1 , y);
     38    }

     39
     40    if (mark2[x][y + 1!= 1 && y + 1 < n && map[x][y + 1!= 'X'  && map[x][y + 1!= 'A' && map[x][y + 1!= 'B'
     41        && map[x][y + 1!= 'C' && map[x][y + 1!= 'D' && map[x][y + 1!= 'E' )
     42    {
     43        FindKey(x , y + 1);
     44    }

     45
     46    if (mark2[x][y - 1!= 1 && y - 1 >= 0 && map[x][y - 1!= 'X'  && map[x][y - 1!= 'A' && map[x][y - 1!= 'B' 
     47        && map[x][y - 1!= 'C' && map[x][y - 1!= 'D' && map[x][y - 1!= 'E')
     48    {
     49        FindKey(x , y - 1);
     50    }

     51}

     52
     53void Findroute(int x,int y)
     54{
     55    if (map[x][y] == 'G')
     56    {
     57        lock = 0;
     58    }

     59
     60    FindKey(x , y);
     61
     62    mark[x][y] = 1;
     63
     64    if (mark[x + 1][y] != 1 && x + 1 < m && map[x + 1][y] != 'X')
     65    {
     66        if (map[x + 1][y] >= 'A' && map[x + 1][y] <= 'E')
     67        {
     68            if (key[map[x + 1][y] - 'A'!= 0 && allkey[map[x + 1][y] - 'A'== key[map[x + 1][y] - 'A'])
     69            {
     70                Findroute(x + 1 , y);
     71            }

     72        }

     73        else
     74        {
     75            Findroute(x + 1 , y);
     76        }

     77    }

     78
     79    if (mark[x - 1][y] != 1 && x - 1 >= 0 && map[x - 1][y] != 'X')
     80    {
     81        if (map[x - 1][y] >= 'A' && map[x - 1][y] <= 'E')
     82        {
     83            if (key[map[x - 1][y] - 'A'!= 0 && key[map[x - 1][y] - 'A'== allkey[map[x - 1][y] - 'A'])
     84            {
     85                Findroute(x - 1 , y);
     86            }

     87        }

     88        else
     89        {
     90            Findroute(x - 1 , y);
     91        }

     92    }

     93
     94    if (mark[x][y - 1!= 1 && y - 1 >= 0 && map[x][y - 1!= 'X')
     95    {
     96        if (map[x][y - 1>= 'A' && map[x][y - 1<= 'E')
     97        {
     98            if (key[map[x][y - 1- 'A'!= 0 && allkey[map[x][y - 1- 'A'== key[map[x][y - 1- 'A'])
     99            {
    100                Findroute(x , y - 1);
    101            }

    102        }

    103        else
    104        {
    105            Findroute(x , y - 1);
    106        }

    107    }

    108
    109    if (mark[x][y + 1!= 1 && y + 1 < n && map[x][y + 1!= 'X')
    110    {
    111        if (map[x][y + 1>= 'A' && map[x][y + 1<= 'E')
    112        {
    113            if (key[map[x][y + 1- 'A'!= 0 && allkey[map[x][y + 1- 'A'== key[map[x][y + 1- 'A'])
    114            {
    115                Findroute(x , y + 1);
    116            }

    117        }

    118        else
    119        {
    120            Findroute(x , y + 1);
    121        }

    122    }

    123
    124}

    125
    126int main()
    127{
    128    int i;
    129    int j;
    130
    131    while (cin >> m >> n)
    132    {
    133        int px = -1;
    134        int py = -1;
    135        int gx = -1;
    136        int gy = -1;
    137
    138        memset(key,0,sizeof(key));
    139        memset(allkey,0,sizeof(allkey));
    140        memset(map,'\0',sizeof(map));
    141        memset(mark,0,sizeof(mark));
    142        memset(mark2,0,sizeof(mark2));
    143        memset(markkey,0,sizeof(markkey));
    144        lock = 1;
    145
    146        if (m == 0 && n == 0)
    147        {
    148            break;
    149        }

    150
    151        for (i = 0; i < m ; ++i)
    152        {
    153            for (j = 0; j < n; ++j)
    154            {
    155                cin >> map[i][j];
    156
    157                if (map[i][j] >= 'a' && map[i][j] <= 'e')
    158                {
    159                    allkey[map[i][j] - 'a']++;
    160                }

    161
    162                if (map[i][j] == 'S')
    163                {
    164                    px = i;
    165                    py = j;
    166                }

    167
    168                if (map[i][j] == 'G')
    169                {
    170                    gx = i;
    171                    gy = j;
    172                }

    173            }

    174        }

    175
    176        if (px == -1 || py == -1 || gx == -1 || gy == -1)
    177        {
    178            cout << "NO" << endl;
    179            continue;
    180        }

    181
    182        Findroute(px,py);
    183
    184        if (lock == 1)
    185        {
    186            cout << "NO" << endl;
    187        }

    188        else
    189        {
    190            cout << "YES" << endl;
    191        }

    192    }

    193
    194    return 0;
    195}

    196
posted on 2009-03-07 15:14 生活要低調 閱讀(1259) 評論(0)  編輯 收藏 引用

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


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

常用鏈接

留言簿(1)

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久国产加勒比精品无码| 亚洲午夜久久久久久尤物| 欧美激情综合色| 亚洲性视频网站| 亚洲福利在线观看| 欧美视频一区二区三区在线观看 | 女女同性女同一区二区三区91| 午夜视频在线观看一区二区三区| 亚洲一区二区在线免费观看| 国产日韩精品入口| 日韩一级精品视频在线观看| 免费观看亚洲视频大全| 国产精品欧美一区二区三区奶水| 亚洲精品美女久久久久| 亚洲精品一区二区三区蜜桃久| 亚洲午夜精品国产| 国产欧美视频一区二区三区| 欧美成人在线免费视频| 欧美jizz19性欧美| 一区二区三区高清在线观看| 亚洲精品久久久久久久久久久久 | 日韩视频永久免费观看| 国产精品免费看久久久香蕉| 国产午夜精品一区理论片飘花 | 麻豆免费精品视频| 黄色日韩网站| 免费亚洲一区二区| 国产一区二区三区网站| 最新国产成人在线观看| 亚洲欧美在线免费| 亚洲午夜免费视频| 久热国产精品| 久久精品国产欧美激情| 久久精品色图| 亚洲区国产区| 午夜激情综合网| 亚洲男人av电影| 欧美午夜剧场| 99re这里只有精品6| 亚洲欧洲综合另类| 国产在线精品成人一区二区三区| 久久免费高清| 亚洲欧美制服另类日韩| 最新69国产成人精品视频免费| 久久不射2019中文字幕| 亚洲精品社区| 国产精品久久久一区二区| 亚洲一区二区三区精品动漫| 亚洲国产一区二区a毛片| 亚洲一区在线观看视频| 国产精品国产三级国产专区53 | 亚洲夫妻自拍| 国产精品日本精品| 久久深夜福利| 亚洲一区中文| 日韩视频一区二区三区在线播放免费观看 | 欧美成人69| 樱花yy私人影院亚洲| 欧美高清视频一区二区三区在线观看 | 激情一区二区三区| 亚洲黄色天堂| 欧美剧在线免费观看网站| 亚洲成人在线网| 最新日韩欧美| 欧美激情一区二区三区四区 | 亚洲三级免费| 国产精品99久久久久久人 | 欧美日韩国产免费观看| 快播亚洲色图| 黄色欧美日韩| 亚洲精品日韩在线观看| 伊人久久久大香线蕉综合直播| 久久久久国产精品人| 久久精品人人做人人综合| 亚洲视频一区在线| 亚洲精品日韩一| 激情国产一区二区| 老司机67194精品线观看| 久久久久在线观看| 亚洲黄色高清| 国产精品久久久对白| 欧美亚洲综合久久| 欧美阿v一级看视频| 亚洲人成网在线播放| 国产精品美女久久久久av超清 | 欧美超级免费视 在线| 亚洲无限乱码一二三四麻| 久久av资源网| 亚洲人成网站999久久久综合| 欧美一级久久久久久久大片| 欧美一级视频一区二区| 欧美怡红院视频| 亚洲精品影视在线观看| 99成人精品| 国产精品久久久久aaaa樱花| 日韩视频永久免费| 久久久久久久久蜜桃| 亚洲免费av观看| 亚洲免费视频一区二区| 欧美日韩国产首页| 亚洲一区中文| 午夜视频在线观看一区二区| 国产精品一区二区三区乱码| 亚洲一区二区影院| 久久久噜噜噜久久狠狠50岁| 亚洲第一色中文字幕| 欧美伊久线香蕉线新在线| 国产欧美日韩不卡| 亚洲第一中文字幕在线观看| 久久精品亚洲精品国产欧美kt∨| 亚洲第一在线综合网站| 久久久精品一区| 亚洲综合精品自拍| 久久狠狠一本精品综合网| 欧美一区二区视频在线观看| 久久av红桃一区二区小说| 久久久久久久高潮| 狠狠综合久久| 国产精品伦子伦免费视频| 美女在线一区二区| 猛男gaygay欧美视频| 男男成人高潮片免费网站| 欧美在线观看视频在线| 新狼窝色av性久久久久久| 欧美亚洲综合久久| 久久色中文字幕| 欧美视频在线一区| 亚洲中无吗在线| 亚洲精品一区久久久久久 | 久久精品女人天堂| 亚洲精品国产欧美| 免费日韩av片| 亚洲精品网站在线播放gif| 亚洲国产99| 欧美日本精品| 亚洲视频每日更新| 亚洲一区二区免费视频| 日韩亚洲不卡在线| 亚洲一区二区三区四区在线观看| 99国产精品视频免费观看一公开| 亚洲视频一起| 欧美国产日韩免费| 一区二区三区四区国产| 午夜亚洲影视| 国产精品久久久久久久久果冻传媒 | 亚洲精品久久嫩草网站秘色| 一级日韩一区在线观看| 国内久久婷婷综合| 国产一区二区三区观看| 久久久久在线| 亚洲欧美精品| 午夜亚洲影视| 亚洲麻豆视频| 久久天天狠狠| 在线亚洲一区| 亚洲一区在线直播| 欧美一区二区三区视频在线| 一区在线播放视频| 国产精品免费网站在线观看| 国产欧美一区二区三区在线看蜜臀| 亚洲欧洲日本mm| 久久中文欧美| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产一区二区中文| 欧美在线视频全部完| 欧美一区二区三区四区在线观看| 国产欧美日韩另类视频免费观看| 久久精品视频网| 免费看的黄色欧美网站| 亚洲欧美激情一区| 免费观看一级特黄欧美大片| 亚洲一区二区欧美日韩| 欧美一二三区精品| av成人免费在线| 欧美午夜一区二区| 一本久道综合久久精品| 亚洲综合日韩| 国产精品美女久久福利网站| 午夜精品视频一区| 久久国产精品第一页| 国产在线播放一区二区三区| 欧美va日韩va| 欧美专区在线观看| 久久成人羞羞网站| 99精品久久| 国产精品视频免费一区| 亚洲一区二区三区免费观看| 夜夜狂射影院欧美极品| 欧美日韩另类字幕中文| 亚洲主播在线观看| 久久av资源网站| 亚洲视频1区| 亚洲一卡二卡三卡四卡五卡| 国产日韩亚洲| 亚洲高清在线| 欧美日韩免费在线视频| 亚洲美女视频网| 欧美在线视频观看免费网站| 亚洲国产成人av| 欧美日韩国产小视频在线观看|