• <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>
            心如止水
            Je n'ai pas le temps
            posts - 400,comments - 130,trackbacks - 0

            這是一道不能再簡(jiǎn)單的題目了,我的做法是bfs,其實(shí)這題可以bfs可以dfs,隨便,看愛(ài)好了(floodfill其實(shí)和bfs差不多)。

            這道題雖然很簡(jiǎn)單,但很慚愧,我交了很多次……

            第一次,低級(jí)錯(cuò)誤,把一次bfs放在內(nèi)層循環(huán)外面了~

            第二次,第十個(gè)數(shù)據(jù)WA

            第三次,忘記把用來(lái)調(diào)試的代碼刪掉,超囧~

            第四次,把第三次的代碼上面的部分代碼刪掉,AC

             

            但是我其中還是犯了一個(gè)不小的錯(cuò)誤,雖然僥幸AC了。我用used[i][j]把每次出隊(duì)的點(diǎn)標(biāo)記,但是這樣有了重復(fù)現(xiàn)象,我開(kāi)了一個(gè)10000的隊(duì)列結(jié)果內(nèi)存不夠用。后來(lái)改正了一下,不使用used[i][j]=01,而是把入隊(duì)的點(diǎn)從“#”改為“-”,這樣一來(lái)在條件中判斷一下就可以避免重復(fù)了。

            感覺(jué)這個(gè)錯(cuò)誤也挺低級(jí),以前bfs的時(shí)候都沒(méi)有這個(gè)錯(cuò)誤……唉,搜索還是需要加強(qiáng)啊。

            不過(guò)這個(gè)錯(cuò)誤也對(duì)我有了一個(gè)提醒,在競(jìng)賽內(nèi)存允許的情況下多開(kāi)內(nèi)存還是可以避免一些不必要的錯(cuò)誤的,比如這題,開(kāi)60000的隊(duì)列,我的錯(cuò)誤方法完全沒(méi)有問(wèn)題。

            不多說(shuō),現(xiàn)在練習(xí)中出的錯(cuò)也是一種積累吧。

            給出代碼,自然沒(méi)有dfs簡(jiǎn)短了。

            #include<stdio.h>
            #define size 10000
            struct
            {
                
            long x[size],y[size],front,rear,count;
            }
            q;
            void clear()
            {
                q.count
            =0;
                q.front
            =0;
                q.rear
            =-1;
            }

            void put(long a,long b)
            {
                q.count
            ++;
                q.rear
            ++;
                q.x[q.rear]
            =a;
                q.y[q.rear]
            =b;
            }

            void get(long *a,long *b)
            {
                q.count
            --;
                
            *a=q.x[q.front];
                
            *b=q.y[q.front];
                q.front
            ++;
            }

            int empty()
            {
                
            return (q.count==0);
            }

            int main()
            {
                clear();
                
            long n,m,i,j,k,t1,t2,ans,sign;
                
            long xd[]={-1,-1,0,1,1,1,0,-1,-2,0,2,0};
                
            long yd[]={0,1,1,1,0,-1,-1,-1,0,2,0,-2};
                
            char map[101][101]={0};
                scanf(
            "%ld%ld",&n,&m);
                
            for(i=1;i<=n;i++)
                
            {
                   scanf(
            "\n");
                   
            for(j=1;j<=m;j++)
                     scanf(
            "%c",&map[i][j]);
                }

                ans
            =0;
                
            for(i=1;i<=n;i++)
                  
            for(j=1;j<=m;j++)
                    
            if(map[i][j]=='#')
                    
            {
                       put(i,j);
                       map[i][j]
            ='-';
                       
            while(!empty())
                       
            {
                          
            get(&t1,&t2);
                          
            for(k=0;k<12;k++)
                            
            if(t1+xd[k]>=1&&t1+xd[k]<=n&&t2+xd[k]>=1&&t2+xd[k]<=m&&map[t1+xd[k]][t2+yd[k]]=='#')
                            
            {
                               put(t1
            +xd[k],t2+yd[k]);
                               map[t1
            +xd[k]][t2+yd[k]]='-';
                            }

                       }

                       ans
            ++;
                    }

                printf(
            "%ld\n",ans);
                getchar();getchar();
            return 0;
            }

            posted on 2010-01-06 19:34 lee1r 閱讀(512) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 題目分類:搜索

            FeedBack:
            # re: vijos P1051 送給圣誕夜的極光
            2015-07-15 18:00 | 王康
            #include<iostream>
            #include<cstdio>
            #include<cstdlib>
            #include<cmath>
            #include<ctime>
            #include<algorithm>
            #include<iomanip>
            using namespace std;
            int n,m,s=0,map[105][105],t,h,dl[1000][2];
            int dx[12]={0,0,0,0,1,1,1,-2,-1,-1,-1,2},
            dy[12]={2,1,-1,-2,1,-1,0,0,0,-1,1,0};
            void bfs(int x,int y)
            {
            s++;h=0;t=1;
            dl[1][0]=x;
            dl[1][1]=y;
            while(h<t)
            {
            h++;
            for(int i=0;i<12;i++)
            {
            if(dl[h][0]+dx[i]>=0&&dl[h][0]+dx[i]<m&&dl[h][1]+dy[i]>=0&&dl[h][1]+dy[i]<n&&map[dl[h][0]+dx[i]][dy[i]+dl[h][1]]==1)
            {
            t++;
            dl[t][0]=dl[h][0]+dx[i];
            dl[t][1]=dl[h][1]+dy[i];
            map[dl[h][0]+dx[i]][dl[h][1]+dy[i]]=0;
            }
            }
            }
            }
            int main()
            {
            char c[104];
            scanf("%d%d",&m,&n);
            for(int i=0;i<m;i++)
            {
            scanf("%s",c);
            for(int j=0;j<n;j++)
            if(c[j]=='#') map[i][j]=1;
            }
            for(int i=0;i<=m;i++)
            for(int j=0;j<=n;j++)
            if(map[i][j]==1) bfs(i,j);
            printf("%d",s);
            while(1);
            }  回復(fù)  更多評(píng)論
              
            亚洲国产日韩欧美久久| 99久久99久久久精品齐齐 | 久久久久人妻精品一区三寸蜜桃| 久久99精品久久久久婷婷| 精品久久久无码21p发布| 亚洲va久久久久| 人妻系列无码专区久久五月天| 国产精品免费久久久久久久久 | 99久久国产免费福利| 国产美女久久久| 久久久久国产精品| 日本免费一区二区久久人人澡| 精品精品国产自在久久高清 | 韩国三级中文字幕hd久久精品| 一级做a爱片久久毛片| 9191精品国产免费久久| 久久国产热这里只有精品| 久久精品三级视频| 中文成人无码精品久久久不卡 | 亚洲精品无码久久毛片| 久久人妻无码中文字幕| 亚洲中文字幕久久精品无码喷水 | 欧美777精品久久久久网| 91久久成人免费| 色播久久人人爽人人爽人人片aV | 亚洲国产成人精品91久久久 | 青青热久久国产久精品| 伊人色综合久久天天人手人婷| 亚洲国产精品久久久天堂 | 国内精品伊人久久久久777| 综合人妻久久一区二区精品| 久久无码人妻一区二区三区午夜| AAA级久久久精品无码片| 99久久精品免费看国产一区二区三区 | 狠狠色丁香久久婷婷综| 中文字幕成人精品久久不卡| 亚洲乱码日产精品a级毛片久久 | 久久99国产精品尤物| 国产精自产拍久久久久久蜜| 亚洲国产成人精品91久久久| 国内精品久久人妻互换|