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

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            #

            Exploring in The Art Of Programming about Huffman Tree's Creation.

             

            /*數據結構作業之——哈弗曼樹的構造以及WPL的計算;
            給出葉子結點的權值,然后求出其WPL 
            程序中出現的葉子結點均為正數,并以0結束
            */

            //Get Guidance By Mr ZhangHong
            //Student: abilitytao

            #include
            <iostream>
            #include
            <cmath>
            #include
            <cstring>
            using namespace std;
            #define MAX 10000000

            struct node 
            {
                
            int w;
                
            int p;
                
            int lch;
                
            int rch;
            }
            huffman[MAX];




            int search_min(int l,int r)
            {

                
            int min=999999999;
                
            int mark=0;
                
            int i;
                
            for(i=l;i<=r;i++)
                
            {
                    
            if(huffman[i].w<min&&huffman[i].p==0)
                    
            {
                        min
            =huffman[i].w;
                        mark
            =i;
                    }

                }

                
            return mark;
                
            }


            int search_second_min(int l,int r)
            {
                
            int min=search_min(l,r);
                
            int secondmin=999999999;
                
            int mark=0;
                
            int i;
                
            for(i=l;i<=r;i++)
                
            {

                    
            if(huffman[i].w>=huffman[min].w&&huffman[i].w<=secondmin&&huffman[i].p==0&&i!=min)
                    
            {
                        secondmin
            =huffman[i].w;
                        mark
            =i;
                        
                    }


                }

                
            return mark;
            }


            int main()
            {

                
            int n;
                
            int i;
                
            int num;
                
            for(i=1;;i++)
                
            {

                    scanf(
            "%d",&n);
                    huffman[i].w
            =n;
                    huffman[i].p
            =0;
                    huffman[i].lch
            =0;
                    huffman[i].rch
            =0;
                    
            if(n==0)
                        
            break;
                }

                num
            =i-1;

                
            int pos=num;
                
            for(i=1;i<=num-1;i++)
                
            {
                    
            int max_mark=search_min(1,i+num-1);
                    
            int secondmax_mark=search_second_min(1,i+num-1);
                    
            ++pos;
                    huffman[pos].w
            =huffman[max_mark].w+huffman[secondmax_mark].w;
                    huffman[pos].p
            =0;
                    huffman[pos].lch
            =secondmax_mark;
                    huffman[pos].rch
            =max_mark;
                    huffman[max_mark].p
            =pos;
                    huffman[secondmax_mark].p
            =pos;
                }

                printf(
            "這棵樹的WPL為:%d\n",huffman[pos].w);
                system(
            "pause");
                
            return 0;
            }





            posted @ 2009-03-23 20:57 abilitytao 閱讀(1145) | 評論 (0)編輯 收藏

            POJ 3364-Black and white painting 簡單數學題

            本題的題意很簡單 :先去掉頂部的7行以及左側的7列,然后求出剩下的棋盤中有多少個白色方格。
            不過有意思的是,我剛開始看這道題的時候居然第一反應是DFS...
            #include<cstdio>
            int main()
            {
                unsigned 
            int n,m,c;
                
            while(scanf("%d%d%d",&n,&m,&c))
                
            {
                    
            if(n==0&&m==0&&c==0)
                        
            break;
                    
            if(c==1&&(n-7)%2==1&&(m-7)%2==1)
                        printf(
            "%d\n",((n-7)*(m-7)+1)/2);
                    
            else
                        printf(
            "%d\n",(n-7)*(m-7)/2);
                }

            }


            posted @ 2009-03-21 17:31 abilitytao 閱讀(427) | 評論 (0)編輯 收藏

            商人過河問題的Matlab實現(轉)

            function foot=chouxiang 

              
            %%%%%%%%%%%%%%%%%%%%%%    程序開始需要知道商人數,仆人數,船的最大容量
            n
            =input('輸入商人數目:');
            nn
            =input('輸入仆人數目:');
            nnn
            =input('輸入船的最大容量:');
              
            if nn>n
            n
            =input('輸入商人數目:');
            nn
            =input('輸入仆人數目:');
            nnn
            =input('輸入船的最大容量:'); 
              end 
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    決策生成
               jc
            =1;    % 決策向量存放在矩陣“d”中,jc為插入新元素的行標初始為1
             
            for i=0:nnn                     
                  
                  
            for j=0:nnn                      
                    
            if (i+j<=nnn)&(i+j>0)     % 滿足條件  D={(u,v)|1<=u+v<=nnn,u,v=0,1,2} 
                      d(jc,
            1:3)=[i,j 1];   %生成一個決策向量后立刻將他擴充為三維(再末尾加“1”)
                      d(jc
            +1,1:3)=[-i,-j,-1];      %  同時生成他的負向量
                         jc
            =jc+2;         %  由于一氣生成兩個決策向量,jc指標需要往下移動兩個單位
                     end
                  end
                     j
            =0;                                    
                 
            end
             
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     狀態數組生成

              kx
            =1;              % 狀態數組存放在矩陣“A”中,生成方法同決策生成
            for  i=n:-1:0
               
                
            for j=nn:-1:0
                   
                   
                    
            if  ((i>=j)&((n-i)>=(nn-j)))|((i==0)|(i==n))  

                       
            %   (i>=j)&((n-i)>=(nn-j)))|((i==0)|(i==n))為可以存在的狀態的約束條件
                       
                        A(kx,
            1:3)=[i,j,1];                          % 生成狀態數組集合D`
                        A(kx
            +1,1:3)=[i,j,0];
                       
                        kx
            =kx+2;
                    end
                end
                 j
            =nn;
            end;
                   
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  將狀態數組生成抽象矩陣     
               

            k
            =(1/2)*size(A,1);                                      
              CX
            =zeros(2*k,2*k);
            a
            =size(d,1);
                       
                
                
              
            for i=1:2*k                               
                    
            for j=1:a
                        
                           c
            =A(i,:)+d(j,:) ;                 
                           x
            =find((A(:,1)==c(1))&(A(:,2)==c(2))&(A(:,3)==c(3))) ;
                           
                           v(i,x)
            =1;          % x為空不會改變v的值
                          
                    end                                             
              end
              
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dijstra方法
            x
            =1; y=size(A,1);
            m
            =size(v,1);
            T
            =zeros(m,1);    
            T
            =T.^-1;
            lmd
            =T;            
            P
            =T;               
            S
            =zeros(m,1);            
            S(x)
            =1;            
            P(x)
            =0; lmd(x)=0;
            k
            =x;

            while(1)
              a
            =find(S==0);
              aa
            =find(S==1);
                 
            if size(aa,1)==m   
                       
            break;
                 end
               
            for j=1:size(a,1)
                      pp
            =a(j,1); 
                    
            if  v(k,pp)~=0 
                          
            if T(pp)>(P(k)+v(k,pp))
                           T(pp)
            =(P(k)+v(k,pp));
                           lmd(pp)
            =k;
                          end   
                    end
               end       
               mi
            =min(T(a));
               
            if mi==inf          
                     
            break;
               
            else
                     d
            =find(T==mi);
                     d
            =d(1);
                     P(d)
            =mi; 
                     T(d)
            =inf;       
                     k
            =d;
                     S(d)
            =1;   
               end
            end
             


            if lmd(y)==inf
               foot
            ='can not reach';
               
            return;
            end

            foot(
            1)=y;
            g
            =2; h=y;
            while(1)        
                
            if h==x
                  
            break;
                end
                   foot(g)
            =lmd(h);
                   g
            =g+1;
                   h
            =lmd(h);
            end   
              
            foot
            =A(foot,:);
            foot(:,
            3)=[];


            這個代碼比我上回寫的C++代碼短很多。。。。。。看來還是Matlab強大丫 一定要盡快學會才行 :-)

            posted @ 2009-03-21 01:09 abilitytao 閱讀(3561) | 評論 (0)編輯 收藏

            POJ 3512-Incidental Points 要選擇合適的算法,否則容易超時

            這道題可以算是1118,2780的升級版,因為更容易超時了 O(∩_∩)O~
            題目的意思很簡單,給你許多點,然后讓你求出在同在一條直線上的點最多有多少個。
            這道題做了2個小時,開始用了暴搜的方法(那個方法不用考慮斜率不存在的情況),超時了,汗~后來改成計算斜率的方法才過的 方法如下:
            單獨考慮斜率不存在的情況,把所有的點按照x的大小排序,算出x相同的點最多有多少個,保存到max1里;
            然后考慮斜率存在的情況,考慮一個定點,把它和其它直線的斜率都算出來,排序,然后再計算相同的斜率最多有多少個,每個點都這樣算一遍,取最大值中的最大值,存在max2中;
            最后比較max1和max2+1(注意max2我們是用斜率算的,它代表max2+1個點)取較大值輸出即可;

            #include<iostream>
            #include
            <cmath>
            #include
            <cstdio>
            #include
            <algorithm>
            using namespace std;

            struct node {
                
            int x;
                
            int y;
            }
            set[1001];

            int cmp(const void *a,const void *b)
            {

                
            struct node*c=(node *)a;
                
            struct node*d=(node* )b;
                
            return c->x-d->x;
            }


            char temp[100];
            double slope[10001];


            int main ()

            {

                
            int n;
                
            int i,j,k;
                
            int testcase;
                testcase
            =0;
                
            int max1;
                
            int max2;
                
            int pos;
                
            int tempmax2;
                
            for(testcase=1;;testcase++)
                
            {

                    pos
            =0;
                    
            while(gets(temp))
                    
            {

                        
            if(temp[0]=='-'&&temp[1]=='-')
                            
            break;
                        pos
            ++;
                        sscanf(temp,
            "%d%d",&set[pos].x,&set[pos].y);
                    }

                    n
            =pos;
                    
            if(n==0)
                        
            break;
                    
            int tempmax=1;
                    max1
            =0;
                    qsort(
            set+1,n,sizeof(set[1]),cmp);
                    
            for(i=2;i<=n;i++)
                    
            {
                        
            if(set[i].x!=set[i-1].x)
                            tempmax
            =1;
                        
            else
                            tempmax
            ++;
                        
            if(tempmax>max1)
                            max1
            =tempmax;
                    }

                    max2
            =0;
                    
            for(i=1;i<=n;i++)
                    
            {
                        pos
            =0;
                        
            for(j=1;j<=n;j++)
                        
            {

                            
            if(i!=j&&set[i].x!=set[j].x)
                            
            {
                                pos
            ++;
                                slope[pos]
            =((double)set[j].y-set[i].y)/((double)set[j].x-set[i].x);

                            }

                        }

                        sort(slope
            +1,slope+1+pos);
                        tempmax
            =1;
                        
                        tempmax2
            =0;
                        
            for(j=2;j<=pos;j++)
                        
            {
                            

                            
            if(slope[j]!=slope[j-1])
                                tempmax
            =1;
                            
            else
                                tempmax
            ++;
                            
            if(tempmax>tempmax2)
                                tempmax2
            =tempmax;
                        }

                        
            if(tempmax2>max2)
                            max2
            =tempmax2;
                    }

                    
            if(max1>max2)
                        printf(
            "%d. %d\n",testcase,max1);
                    
            else
                        printf(
            "%d. %d\n",testcase,max2+1);

                    }


                
            return 0;
            }


            posted @ 2009-03-21 00:48 abilitytao 閱讀(1195) | 評論 (5)編輯 收藏

            運算符重載的簡單研究

            在這里值得一提的是 我開始用VC6.0編譯這段程序 居然出現編譯錯誤 后來用2005卻可編譯成功,看來VC6.0對運算符重載的支持還不夠完善,看來以后要少用6.0了。(記得它對STL也缺乏支持O(∩_∩)O~)

            #include<iostream>
            using namespace std;


            class plural
            {
            private:
                
            int x;
                
            int y;
            public:
                plural()
                
            {

                    x
            =0;
                    y
            =0;
                }

                plural(
            int a,int b)
                
            {

                    x
            =a;
                    y
            =b;
                }

                
            void print();
                plural 
            operator +(const plural &n);
                plural 
            operator -(const plural &n);
                friend ostream
            & operator <<(ostream &os,const plural &ob);
            }
            ;



            void plural::print()
            {

                cout
            <<x<<' '<<y<<endl;

            }



            plural plural:: 
            operator +(const plural &n)
            {

                plural temp;
                temp.x
            =x+n.x;
                temp.y
            =y+n.y;
                
            return temp;
            }


            plural plural::
            operator- (const plural &n)
            {
                plural temp;
                temp.x
            =x-n.x;
                temp.y
            =y-n.y;
                
            return temp;


            }


            ostream
            & operator<<(ostream &os,const plural &n)
            {
                os
            <<ob.x<<' '<<ob.y<<endl;
                
            return os;
            }

            //////////////////////////////////////////////////////////////////////////






            int main ()
            {

                plural a(
            3,7);
                plural b(
            4,10);
                plural temp
            =a+b;
                cout
            <<temp;
                
            return 0;
            }

            posted @ 2009-03-18 00:01 abilitytao 閱讀(191) | 評論 (0)編輯 收藏

            已知樹的前序遍歷和中序遍歷,求后序遍歷的方法(轉)

                 摘要: /**//*    樹中已知先序和中序求后序。      如先序為:abdc,中序為:bdac .      則程序可以求出后序為:dbca 。此種題型也為數據結構常考題型。    ...  閱讀全文

            posted @ 2009-03-17 18:20 abilitytao 閱讀(7381) | 評論 (0)編輯 收藏

            數據結構作業之二叉樹左右子樹交換+二叉樹高度計算(寫的不好還請大家多多指點)

            //數據結構作業之二叉樹左右子樹交換+二叉樹高度計算
            //學生:abilitytao 指導老師:Mr ZHANGHONG
            //時間:2009年3月17日17:54:33
            #include<iostream>
            using namespace std;

            struct node{
                
            int data;
                node 
            *lchild;
                node 
            *rchild;
            }
            ;

            void preorder(node *p)
            {

                
            if(p!=NULL)
                
            {
                    
                    cout
            <<p->data;
                    preorder(p
            ->lchild);
                    preorder(p
            ->rchild);
                }

            }

            void inorder(node *p)
            {
                
            if(p==NULL)
                    
            return ;
                inorder(p
            ->lchild);
                cout
            <<p->data;
                inorder(p
            ->rchild);
                
            }

            void CreatTree(node *&p)
            {

                
            int temp;
                cin
            >>temp;
                
            if(temp==0)
                
            {
                    p
            =NULL;
                    
            return;
                }


                p
            =new node;
                p
            ->data=temp;
                CreatTree(p
            ->lchild);
                CreatTree(p
            ->rchild);
            }

            void change(node *p)
            {

                
            if(p==NULL)
                    
            return;
                node 
            *temp;
                temp
            =p->lchild;
                p
            ->lchild=p->rchild;
                p
            ->rchild=temp;
                change(p
            ->lchild);
                change(p
            ->rchild);
            }


            int count(node *p)//用遞歸的方法計算樹高
            {
                
            if(p==NULL)
                    
            return 0;
                
            int lhigh=count(p->lchild);
                
            int rhigh=count(p->rchild);
                
            if(lhigh>=rhigh)
                    
            return lhigh+1;
                
            else
                    
            return rhigh+1;
            }
            //問:可以用全局變量計算樹高么?

            /*int count(node *p)
            {
            if(p==NULL)
            return 0;
            else if(count(p->lchild)>=count(p->rchild))
            return count(p->lchild)+1;
            else count(p->rchild)+1;
            }
            */
            //錯誤版樹高計算程序 問:到底哪錯了???個人感覺是遞歸上出問題了。。。



            ///////////////////////////以下為測試/////////////////////////////
            int main ()
            {

                node 
            *tree;
                CreatTree(tree);
                cout
            <<"此二叉樹的高度為:"<<count(tree)<<endl;
            system(
            "pause");
            return 0;
            }

            //////////////////////////////////////////////////////////////////////////

            posted @ 2009-03-17 18:08 abilitytao 閱讀(3002) | 評論 (4)編輯 收藏

            數據結構作業——三元矩陣相加

            寫得一般,懇請大家批評指正

            //數據結構作業 三元組矩陣相加C=A+B;
            //由于時間所限 這里僅考慮算法內核 不考慮軟件容錯及外包界面的工作
            #include<algorithm>
            #include
            <cmath>
            #include
            <cstdio>
            #include
            <iostream>
            #include
            <cstring>
            using namespace std;
            #define  MAXSIZE 10000

            struct triple
            {

                
            int x,y;
                
            int val;
            }
            ;

            struct tripletable
            {
                
                triple data[MAXSIZE];
                
            int len,wide,num;
            }
            ;

            tripletable a,b;

            int result[MAXSIZE][MAXSIZE];


            int main ()
            {
                
            int i,j;
                
            int p;

                cout
            <<"                        數據結構作業之 三元組矩陣相加C=A+B ";
                cout
            <<"                                                                 ——by abilitytao (指導老師:Mr Zhang Hong)"<<endl<<endl;
                cout
            <<"請輸入第一個矩陣的長:";
                cin
            >>a.len;
                cout
            <<"請輸入第一個矩陣的寬:";
                cin
            >>a.wide;
                cout
            <<"請輸入矩陣a:"<<endl;
                p
            =1;
                a.num
            =0;
                
            for(i=1;i<=a.wide;i++)
                
            {
                    
                    
            for(j=1;j<=a.len;j++)
                    
            {
                        
                        
            int temp;
                        cin
            >>temp;
                        
            if(temp!=0)
                        
            {
                            a.data[p].x
            =i;
                            a.data[p].y
            =j;
                            a.data[p].val
            =temp;
                            p
            ++;
                            a.num
            ++;
                        }

                        
                    }

                }

                cout
            <<endl<<endl<<"ATTENTION:由于本程序不考慮容錯,請確保兩個矩陣的長寬相等"<<endl<<endl<<endl;
                cout
            <<"請輸入第二個矩陣的長:";
                cin
            >>b.len;
                cout
            <<"請輸入第二個矩陣的寬:";
                cin
            >>b.wide;
                cout
            <<"請輸入矩陣b:"<<endl;
                p
            =1;
                b.num
            =0;
                
            for(i=1;i<=b.wide;i++)
                
            {
                    
                    
            for(j=1;j<=b.len;j++)
                    
            {
                        
                        
            int temp;
                        cin
            >>temp;
                        
            if(temp!=0)
                        
            {
                            b.data[p].x
            =i;
                            b.data[p].y
            =j;
                            b.data[p].val
            =temp;
                            p
            ++;
                            b.num
            ++;
                        }

                        
                    }

                }

                
            for(i=1;i<=a.num;i++)
                
            {
                    
                    result[a.data[i].x][a.data[i].y]
            +=a.data[i].val;
                }

                
            for(i=1;i<=b.num;i++)
                
            {
                    result[b.data[i].x][b.data[i].y]
            +=b.data[i].val;
                }

                cout
            <<"矩陣相加的結果是:"<<endl;
                
            for(i=1;i<=a.wide;i++)
                
            {
                    
                    
            for(j=1;j<=a.len;j++)
                    
            {
                        
                        cout
            <<result[i][j]<<' ';
                        
                    }

                    cout
            <<endl;
                    
                }

                
                system(
            "pause");
                
            return 0;
                
            }






            posted @ 2009-03-16 13:15 abilitytao 閱讀(642) | 評論 (0)編輯 收藏

            POJ 1111-Image Perimeters DFS深度優先搜索

            以前做過POJ上的3620,題意大概是要你求出相鄰的X有多少個,而這個題呢,則是要求你求出整個互相鄰接的X所夠成的周長;
            我個人認為,這兩道題有異曲同工之妙。
            這道題和3620不同的是,我們不能將所有與X相鄰的結點都壓棧,而是選擇X結點壓棧,為什么呢?我想了想,因為此題的周長是在你考察X的基礎上向四面八方試探而求出的。你最好是立足與X結點,由于對壓棧元素進行了限制,那么在進入dfs遞歸的時候也就不用大費周章的去判斷
            if(visit[i][j]==0)了,因為壓棧的元素必須是沒有考察過的X結點;當然這只不過是基于自己的個人習慣而已,我想,即使你不判斷壓棧元素,應該也能做出來吧,只不過這樣似乎并不符合我們的思維習慣而已;
            另外做這個題目的時候還遇到了一個小問題,就是cin.ignore()的使用,再輸入r,c,x,y的值之后,由于回車符不可能被整型變量吃掉,所以它會滯留在緩沖區,使得在輸入字符時回車符優先進入map數組,而且每一行之后都有一個回車符,所以這個cin.ignore()的位置也是不能改變的。
            當讓還有個有意思的地方,就是這個題要用向量來存儲考察的方向,這樣的話一個循環就可以考察完所有的方向,不用費力把所有的方向都寫一遍了,這是一個很不錯的方法,宜借鑒之;
            最后要感謝一下網路上分享代碼的大牛們,正是由于參考了你們的代碼才使我有所進步;

            #include<iostream>
            #include
            <cmath>
            #include
            <cstdio>
            using namespace std;
            #define MAX 100

            char map[MAX][MAX];
            int visit[MAX][MAX];
            int sum;
            int r,c;
            int path[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};



            void dfs(int a,int b)
            {

                visit[a][b]
            =1;
                
            int i;
                
            for(i=0;i<8;i++)
                
            {
                    
            int x=a+path[i][0];
                    
            int y=b+path[i][1];

                    
            if(x>=1&&x<=r&&y>=1&&y<=c)
                    
            {

                        
            if(map[x][y]=='X'&&visit[x][y]==0)
                            dfs(x,y);
                            
                        
            else if(map[x][y]=='.'&&(x==a||y==b))
                        
            {
                            sum
            ++;

                        }


                    }

                    
            else if(x==a||y==b)
                        sum
            ++;
                }


            }



            int main ()

            {

                
            int x,y;
                
            int i,j;
                
            while(scanf("%d%d%d%d",&r,&c,&x,&y))
                
            {
                    
            for(i=1;i<=r;i++)
                        
            for(j=1;j<=c;j++)
                        
            {

                            visit[i][j]
            =0;
                        }

                    
                    
            for(i=1;i<=r;i++)
                    
            {
                        cin.ignore();
                        
            for(j=1;j<=c;j++)
                        
            {
                            scanf(
            "%c",&map[i][j]);
                        }


                    }

                    
                    sum
            =0;
                    
            if(r==0&&c==0&&x==0&&y==0)
                        
            break;
                    dfs(x,y);
                    printf(
            "%d\n",sum);
                }

            return 0;
            }




             

            posted @ 2009-03-12 20:47 abilitytao 閱讀(1910) | 評論 (1)編輯 收藏

            POJ-1321 棋盤問題—即簡化版八皇后問題(dfs深度優先搜索+回溯)

            這道題對我的啟發非常深,讓我對遞歸+回溯技術有了新的理解。我要向出題者致謝,也要感謝網上分享代碼的朋友

            //參考了網絡上牛人的代碼
            #include <iostream>
            #include 
            <algorithm>
            using namespace std;


            bool row[9];
            bool line[9];
            bool map[9][9];
            int ans;
            int sum;
            int n,k;

            bool check(int i,int j)
            {
                
            if(map[i][j]&&row[i]&&line[j])return 1;
                
            else return 0;
            }


            void dfs(int r)
            {
                
            if(sum==k){ans++;return;}
                
            if(r==n+1)return;
                
            for(int i=1;i<=n;i++)
                
            {
                    
            if(check(r,i))
                    
            {
                        row[r]
            =0;line[i]=0;
                        sum
            ++;
                        dfs(r
            +1);
                        sum
            --;
                        row[r]
            =1;line[i]=1;
                    }

                }

                dfs(r
            +1);
            }



            int main()
            {
                
            int i,j;
                
            char c;
                
            while(cin>>n>>k)
                
            {
                    
            if(n==-1&&k==-1)
                        
            break;
                    sum
            =0;
                    ans
            =0;
                    
                    
            for(i=1;i<=n;i++)
                    
            {
                        getchar();
                        row[i]
            =1;line[i]=1;
                        
            for(j=1;j<=n;j++)
                        
            {
                            scanf(
            "%c",&c);
                            
            if(c=='#')map[i][j]=1;
                            
            else map[i][j]=0;
                        }

                    }

                    dfs(
            1);
                    cout
            <<ans<<endl;
                }

                system(
            "pause");
                
            return 0;
            }

            posted @ 2009-03-07 17:44 abilitytao 閱讀(2022) | 評論 (1)編輯 收藏

            僅列出標題
            共42頁: First 34 35 36 37 38 39 40 41 42 
            久久午夜羞羞影院免费观看| 一本久久a久久精品综合香蕉| 久久亚洲精品无码AV红樱桃| 亚洲级αV无码毛片久久精品| 久久综合综合久久狠狠狠97色88| 久久99热这里只有精品国产| 久久发布国产伦子伦精品| 国产午夜精品久久久久九九电影| 久久综合久久综合亚洲| 国内精品久久久久影院免费| 久久久久久曰本AV免费免费| 91精品国产综合久久香蕉 | 91久久福利国产成人精品| 人妻少妇精品久久| 久久精品国产99久久丝袜| 国产精品美女久久久| 99精品久久精品一区二区| 亚洲日本va午夜中文字幕久久| 精品精品国产自在久久高清| 久久久老熟女一区二区三区| 久久夜色精品国产噜噜亚洲a| 日本亚洲色大成网站WWW久久| 国内精品伊人久久久久影院对白| 7777久久亚洲中文字幕| 久久99国产精一区二区三区| 狠狠色丁香久久婷婷综| 91精品国产乱码久久久久久 | 久久99国产亚洲高清观看首页| 久久精品欧美日韩精品| 国产精品美女久久久| 国产日韩久久久精品影院首页| 久久精品国产亚洲7777| 国内精品久久久久影院亚洲| 中文无码久久精品| 好属妞这里只有精品久久| 久久se精品一区精品二区国产| 亚洲国产精品成人久久蜜臀 | 国产免费久久久久久无码| 亚洲欧美国产精品专区久久 | 亚洲国产成人久久一区久久| 人妻少妇久久中文字幕一区二区|