• <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>

            C小加

            厚德 博學 求真 至善 The bright moon and breeze
            posts - 145, comments - 195, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            NYOJ 82 迷宮尋寶(一) 解題報告

            Posted on 2012-01-15 17:53 C小加 閱讀(583) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
            簡單DFS,數(shù)據(jù)很弱。。


            #include <iostream>
            #include <cstdio>
            #include <cstring>
            using namespace std;
            char map[23][23];
            typedef struct
            {
                int x,y;
                int flag;
            }point;
            point p[5];
            int _max[5];
            int _num[5];
            int flag;
            void door();
            void dfs(int x,int y)
            {
                if(map[x][y]!='X')
                {
                    switch(map[x][y])
                    {
                    case 'a': _num[0]++;break;
                    case 'b': _num[1]++;break;
                    case 'c': _num[2]++;break;
                    case 'd': _num[3]++;break;
                    case 'e': _num[4]++;break;
                    case 'A': {p[0].x=x;p[0].y=y;p[0].flag++;return;}
                    case 'B': {p[1].x=x;p[1].y=y;p[1].flag++;return;}
                    case 'C': {p[2].x=x;p[2].y=y;p[2].flag++;return;}
                    case 'D': {p[3].x=x;p[3].y=y;p[3].flag++;return;}
                    case 'E': {p[4].x=x;p[4].y=y;p[4].flag++;return;}
                    case 'G': {flag=1;return;}
                    }


                    map[x][y]='X';//說明此路已走過
                    dfs(x-1,y);
                    dfs(x,y+1);
                    dfs(x+1,y);
                    dfs(x,y-1);
                    door();


                }

            }

            //如果鑰匙夠了就打開這扇門
            void door()
            {
                for(int i=0;i<5;i++)
                    {
                        if(p[i].flag)
                        {

                            if(_num[i]==_max[i])
                            {
                                map[p[i].x][p[i].y]='X';
                                dfs(p[i].x-1,p[i].y);
                                dfs(p[i].x,p[i].y+1);
                                dfs(p[i].x+1,p[i].y);
                                dfs(p[i].x,p[i].y-1);

                            }
                        }
                    }
            }


            int main()
            {
                //freopen("input.txt","r",stdin);
                int m,n;
                int sx,sy;

                while(cin>>m>>n,m+n)
                {
                    //初始化
                    flag=0;
                    memset(_max,0,sizeof(_max));
                    memset(_num,0,sizeof(_num));
                    memset(p,0,sizeof(p));
                    memset(map,'X',sizeof(map));

                  for(int i=1;i<=m;i++)
                  {
                      for(int j=1;j<=n;j++)
                      {
                            cin>>map[i][j];
                            if(map[i][j]=='S') {sx=i;sy=j;}//入口
                            
            //初始化最大鑰匙數(shù)量
                            else if(map[i][j]=='a') _max[0]++;
                            else if(map[i][j]=='b') _max[1]++;
                            else if(map[i][j]=='c') _max[2]++;
                            else if(map[i][j]=='d') _max[3]++;
                            else if(map[i][j]=='e') _max[4]++;

                      }
                  }
                dfs(sx,sy);
                door();

                if(flag) cout<<"YES"<<endl;
                else cout<<"NO"<<endl;




                }


                return 0;
            }
            午夜精品久久久久久久久| 亚洲精品无码专区久久久| 91精品国产91久久| 久久精品亚洲乱码伦伦中文| 区久久AAA片69亚洲 | 国产亚洲婷婷香蕉久久精品| 97久久精品午夜一区二区| 欧美日韩成人精品久久久免费看| 无遮挡粉嫩小泬久久久久久久| 国产精品久久久99| 久久国产色AV免费看| 亚洲国产成人久久一区久久| AV狠狠色丁香婷婷综合久久 | 99久久精品国产一区二区蜜芽| 四虎影视久久久免费观看| 精品国产乱码久久久久久郑州公司| 亚洲精品无码久久久| 国产高潮国产高潮久久久91 | 亚洲午夜精品久久久久久app| 国产成人精品久久二区二区 | 精品免费久久久久国产一区 | 欧美亚洲国产精品久久| 狠狠久久综合伊人不卡| 国产∨亚洲V天堂无码久久久| 久久国语露脸国产精品电影| 久久精品一区二区三区中文字幕| 97久久精品午夜一区二区| 久久精品国产亚洲av水果派| 少妇熟女久久综合网色欲| 亚洲欧美日韩精品久久亚洲区| 久久99精品久久久久久9蜜桃 | 久久精品国产亚洲av麻豆色欲 | 久久精品无码专区免费青青| 久久婷婷五月综合色高清| 伊人久久大香线蕉亚洲| 久久精品国产AV一区二区三区| 久久久精品人妻一区二区三区蜜桃 | 国产精品成人无码久久久久久| 中文精品久久久久国产网址| 久久综合丁香激情久久| 91性高湖久久久久|