• <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>
            posts - 195,  comments - 30,  trackbacks - 0
            Status In/Out TIME Limit MEMORY Limit Submit Times Solved Users JUDGE TYPE
            stdin/stdout 3s 8192K 439 74 Standard

            Io and Ao are playing a word game. They say a word in the dictionary by turns. The word in the dictionary only contains lowercase letters. And the end character of the former said word should be the same as the start character of the current said word. They can start the game from any word in the dictionary. Any word shouldn't be said twice. Now, we define the complexity of the game that is the sum length of all words said in the game. Give you a dictionary, can you tell me the max complexity of this word game?

            Input

            The first line contains a single positive integer n(0 < n <=12). Next n lines are n words in the dictionary. The length of each word will not exceed 100.

            Output

            A single integer represents the complexity of the game.

            Sample Input

            3
            joj
            jlu
            acm
            6
            cctv
            redcode
            lindong
            we
            love
            programming
            3
            daoyuanlee
            come
            on
            

            Sample Output

            6
            11
            10
            

            Problem Source: provided by loon

            #include<iostream>
            #include<cstdlib>
            using namespace std;
            struct S
            {
             string a;
             char begin;
             char end;
             int length;
             }s[13];
             int visited[13];
            int temp; 
            void search(int a,int num,int pre)
             {
              
              for(int i=0;i<num;i++ )
              {
               if(s[i].begin==s[pre].end&&visited[i]==0)
               {
                visited[i]=1;
                search(a+s[i].length,num,i);
                if(a+s[i].length>temp)temp=a+s[i].length;
                visited[i]=0;
               }
              }
             }
              int main()
              {
              freopen("s.txt","r",stdin);
              freopen("key.txt","w",stdout);
               int num;
               while(cin>>num)
               {
                int i;
              temp=0;
              for( i=0;i<num;i++)
              {
               cin>>s[i].a;
               s[i].length=(s[i].a).size();
               s[i].begin=(s[i].a)[0];
               s[i].end=(s[i].a)[s[i].length-1];
               if(s[i].length>temp)
               temp=s[i].length;
                 }
              for(i=0;i<num;i++) 
                 {
               memset(visited,0,sizeof(visited));
               visited[i]=1;
               search(s[i].length,num,i);
              }
              cout<<temp<<endl;
             }

              //system("PAUSE");
              return   0;
              }

            以上代碼超時。完全可以剪枝。
            舉個例子
            abc
            cbd
            dbm
            dbacmdp
            我的程序一直搜啊搜,每次搜完都重新開始。比如在以a開頭后,搜到c,下次再搜索時直接利用c的結果,這是深搜的特點決定的!!!
            *************************
            這種類似的有序搜索都可以用     *  備忘錄方法*
            **************************
            #include<iostream>
            #include<cstdlib>
            using namespace std;
            int num;
            struct S
            {
             string a;
             char begin;
             char end;
             int length;
             }s[13];
             int visited[13];
            int temp;
            int sum[13]; 
            int search(int pre)//·µ»Ø´ÓpreµãÒÔºóµÄ×ܵÄÖµ
             {
              int j=s[pre].length,k=0;
              for(int i=0;i<num;i++ )
              {
               if(s[i].begin==s[pre].end&&visited[i]==0&&i!=pre)//必須要有I!=pre
               {
                visited[i]=1;
                k=search(i)+s[pre].length;
                if(k>j)j=k;
               }
               else
               {
                if(s[i].begin==s[pre].end&&i!=pre)//必須要有i!=pre
                return sum[i]+s[pre].length;//相當于備忘錄,而且無需visited[i]=0;
               }
              }
              sum[pre]=j;
              return j;
             }
              int main()
              {
             freopen("s.txt","r",stdin);
              freopen("key.txt","w",stdout);
               while(cin>>num)
               {
                int i,j;
              temp=0;
              j=0;
              for( i=0;i<num;i++)
              {
               cin>>s[i].a;
               s[i].length=(s[i].a).size();
               s[i].begin=(s[i].a)[0];
               s[i].end=(s[i].a)[s[i].length-1];
               if(s[i].length>temp)
               temp=s[i].length;
                 }
              for(i=0;i<num;i++) 
                 {
               memset(visited,0,sizeof(visited));
                        memset(sum,0,sizeof(sum));
               visited[i]=1;
               j=search(i);
               if(j>temp)
               temp=j;
              }
              cout<<temp<<endl;
             }

              //system("PAUSE");
              return   0;
              }

            因為I!=pre又錯了幾下。
            以后debug盡量自己用眼睛看,更省時間!!!!!!!!!

            posted on 2009-07-05 12:33 luis 閱讀(330) 評論(0)  編輯 收藏 引用 所屬分類: 搜索給我啟發題
            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            欧美无乱码久久久免费午夜一区二区三区中文字幕| 久久精品国产亚洲AV影院| 日本一区精品久久久久影院| 99久久精品国产一区二区蜜芽| 午夜精品久久久久久久无码| 97久久香蕉国产线看观看| 久久亚洲国产成人影院网站 | 香蕉99久久国产综合精品宅男自| 伊人久久综合无码成人网| 久久av高潮av无码av喷吹| 人妻久久久一区二区三区| 亚洲国产香蕉人人爽成AV片久久| A狠狠久久蜜臀婷色中文网| 四虎久久影院| 99久久综合狠狠综合久久| 97久久超碰国产精品旧版| 伊人久久综合精品无码AV专区| 久久久久18| 9191精品国产免费久久| 精品午夜久久福利大片| 久久国产色AV免费看| 婷婷综合久久中文字幕蜜桃三电影 | 99久久99这里只有免费的精品| 亚洲婷婷国产精品电影人久久 | 精品一区二区久久久久久久网站| 人妻精品久久久久中文字幕69| 日韩影院久久| 亚洲人成无码久久电影网站| 久久国产视频99电影| 国产—久久香蕉国产线看观看| 久久精品成人国产午夜| 99久久亚洲综合精品网站| 国产精品99久久久久久宅男 | 久久午夜综合久久| 久久综合九色欧美综合狠狠| 久久久久国色AV免费观看| 午夜视频久久久久一区| 欧美亚洲国产精品久久久久| 伊人色综合久久天天人守人婷| 久久亚洲国产最新网站| 亚洲国产精品久久久天堂|