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

            poj 1101

            //======================================

            這道題大多數(shù)人都用的是廣搜
            +優(yōu)先隊(duì)列,不過我的做法是深搜

            做起來還不是很繁瑣,不過最讓人詫異的就是我原來把數(shù)組開到了

            77 ,因?yàn)閣,h最大值是75加上兩行外圍空地,最大開到77就可以了啊

            但是結(jié)果卻是一直WA,困擾我很長時(shí)間,后來改到數(shù)組開到了100

            ok ac.,覺得很怪異,然后把數(shù)組開到78還是可以ac的,發(fā)出來

            供路過的acmer指點(diǎn)迷津。。。

            //======================================

            #include 
            <iostream>
            #include 
            <string>
            #define MAXN 78
            #define min _min
            #define inf 123456789
            using namespace std;

            char _m[MAXN][MAXN];
            bool mark[MAXN][MAXN];
            int dp[MAXN][MAXN];
            int dis[4][2= {0,1,0,-1,1,0,-1,0};
            int dis_mark[4= {4,3,2,1};
            int min;
            int x_2;
            int y_2;
            int real_w;
            int real_h;
            void dfs(int x,int y,int dir,int step);
            int main()
            {
            freopen(
            "acm.acm","r",stdin);
            // freopen("out.txt","w",stdout);
            int w;
            int h;
            int i;
            int j;
            int x_1;
            int y_1;
            int temp_x;
            int temp_y;
            string s;
            int time = 0;
            while(cin>>w>>h,w||h)
            {
               cout
            <<"Board #"<<++ time<<":"<<endl;
               getchar();
               
            int time_in = 0;
               real_w 
            = w+2;
               real_h 
            = h+2;
               memset(_m,
            ' ',sizeof(_m));
               
            for(i = 1; i <= h; ++ i)
               {
                getline(cin,s);
                
            for(j = 1; j <= w; ++ j)
                {
                 _m[i][j] 
            = s[j-1];
                }
               }

              
               
            while(cin>>y_1>>x_1>>y_2>>x_2,x_1||y_1||x_2||y_2)
               {
               
                cout
            <<"Pair "<<++ time_in<<"";
                memset(mark,
            false,sizeof(mark));
                
            for(i = 0; i < MAXN; ++ i)
                {
                 
            for(j = 0; j < MAXN; ++ j)
                 {
                  dp[i][j] 
            = inf;
                 }
                }
                min 
            = inf;
                
            for(i = 0; i < 4++ i)
                {
                 temp_x 
            = x_1 + dis[i][0];
                 temp_y 
            = y_1 + dis[i][1];
                 
            if((_m[temp_x][temp_y] != 'X' ||_m[temp_x][temp_y] == 'X' && temp_x == x_2 && temp_y == y_2) && !mark[temp_x][temp_y])
                 {
                  mark[temp_x][temp_y] 
            = true;
                  dfs(temp_x,temp_y,dis_mark[i],
            1);
               
                  mark[temp_x][temp_y] 
            = false;
                 }
                }
                
            if(min == inf)
                {
                 cout
            <<"impossible."<<endl;
                }
                
            else
                {
                 cout
            <<min;
                 cout
            <<" segments."<<endl;
                }
               }
               cout
            <<endl;
            }
            }

            void dfs(int x,int y,int dir,int step)
            {
            if(x == x_2 && y == y_2)
            {
               
            if(step < min)
               {
                min 
            = step;
               }
               
            return;
            }

            if(step < dp[x][y])
            {
               dp[x][y] 
            = step;
            }
            else
            {
               
            return;
            }

            int i;
            int j;
            int temp_x;
            int temp_y;// 右
            for(i = 0; i < 4++ i)
            {
               temp_x 
            = dis[i][0+ x;
               temp_y 
            = dis[i][1+ y;
               
            if(temp_x >= 0 && temp_x < real_h && temp_y >= 0 && temp_y <= real_w &&( _m[temp_x][temp_y] != 'X' || _m[temp_x][temp_y] == 'X' && temp_x == x_2 && temp_y == y_2)&& !mark[temp_x][temp_y])
               {
                mark[temp_x][temp_y] 
            = true;
                
            if(dis_mark[i] != dir)
                {
                 dfs(temp_x,temp_y,dis_mark[i],step
            +1);
                 
            if(step+1 < dp[temp_x][temp_y])
                  dp[temp_x][temp_y] 
            = step+1;
                }
                
            else
                {
                 dfs(temp_x,temp_y,dis_mark[i],step);
                 
            if(step < dp[temp_x][temp_y])
                  dp[temp_x][temp_y] 
            = step;
                }
                mark[temp_x][temp_y] 
            = false;
               }
            }

            }

            posted on 2010-06-19 17:00 成大才子 閱讀(696) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論

            # re: poj 1101 2010-09-14 15:43 rayafjyblue

            數(shù)組開78大概是因?yàn)樽址當(dāng)?shù)組的每一行都有個(gè)‘\0’吧,所以要大一點(diǎn)。。。。。偶也是菜鳥。。。。  回復(fù)  更多評(píng)論   

            # re: poj 1101 2010-09-25 09:08 caizi

            @rayafjyblue
            呵呵,好像不是那個(gè)原因。  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            關(guān)于更多關(guān)于成大才子,請(qǐng)?jiān)L問http://hi.baidu.com/成大才子

            常用鏈接

            留言簿(1)

            隨筆檔案

            文章分類

            文章檔案

            鏈接

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲欧美国产精品专区久久| 99精品国产在热久久无毒不卡| 久久精品国产99国产电影网| 久久777国产线看观看精品| 久久国产精品久久久| 久久久久99精品成人片| 欧美精品国产综合久久| 99久久婷婷国产综合亚洲| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久九九兔免费精品6| 丰满少妇人妻久久久久久| 久久精品国产亚洲av瑜伽| 看久久久久久a级毛片| 青青热久久国产久精品| MM131亚洲国产美女久久| 午夜精品久久久久| 成人国内精品久久久久影院VR| 久久久亚洲AV波多野结衣| 国内精品伊人久久久久网站| 日韩人妻无码精品久久久不卡 | 欧美激情精品久久久久| 日韩精品无码久久一区二区三| 99久久国产热无码精品免费| 波多野结衣久久一区二区| A级毛片无码久久精品免费| 国产精品9999久久久久| 国产A级毛片久久久精品毛片| 国产精品热久久无码av| 久久se精品一区二区| 久久精品国产亚洲AV高清热| 伊人久久大香线蕉av不卡| 久久强奷乱码老熟女网站| 久久99九九国产免费看小说| 性欧美大战久久久久久久| 人妻中文久久久久| 伊人久久五月天| 一级做a爰片久久毛片毛片| 久久91精品国产91久| 久久精品免费全国观看国产| 久久人人爽人人爽人人片AV东京热 | 国产成人综合久久精品红|