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

            a tutorial on computer science

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              21 隨筆 :: 0 文章 :: 17 評論 :: 0 Trackbacks
            DFS題,優化比較麻煩。首先要把棍子從大大小排序下,因為大棍子拼不成的概率大于小棍子拼不成的概率。主要有兩個優化:
            1.當當前棍子是某一跟整個棍子的開始時,如果搜不到結果,那么就不要再搜了。因為:開頭的棍子限制最小,并且它總要作為某一根整個棍子的一部分。
            2.當當前棍子和前面的棍子長度相等,并且前面那根沒用過。直接跳過。(這個優化主要是對坑爹數據進行的,主要還是第一個優化。)。
            別的優化基本都是浮云。歡迎噴子,歡迎指點。

            #include <cstdio>
            #include <cstdlib>
            #include <cstring>

            int stick[110];
            int flag[110];
            int scount;
            int find;
            int cmp(const void* a,const void* b)
            {
              return *(int*)b - *(int*)a;
            }

            int testdata = 0;
             
            void dfs(int start,int len,int N,int count)
            {
               testdata++;
               int i,j;
               if( (len == 0 && count == 0) || find == 1)
               {
                 find = 1;
                 return;
               }
                 
              if(len == 0)
               {
                 i =0;
                 while(flag[i] == 1) 
                   i++;
                 flag[i] = 1;
                 if(stick[i] != N)
                   dfs(i+1,stick[i],N,count);
                 else
                   dfs(0,0,N,count-1);
                 flag[i] = 0;
                 return;
               }
                

                 
               for(i=start;i<scount;i++)
               {
                 if(i && !flag[i-1] && !flag[i] && stick[i] == stick[i-1])
                   continue;
                   
                 if(!flag[i]) 
                 {
                    if(len+stick[i] < N)
                    {
                      flag[i] = 1;
                      dfs(i+1,len+stick[i],N,count);
                      flag[i] = 0;
                    }
                    else if(len+stick[i] == N)
                    {
                      flag[i] = 1;
                      dfs(0,0,N,count-1);
                      flag[i] = 0;
                      break;
                    }
                 }
               }
            }
            int main()
            {
              int i;
              int total;
              while(scanf("%d",&scount)!=EOF && scount)
              {
                int minstart = 0;
                total = 0;
                for(i=0;i<scount;i++)
                {
                  scanf("%d",&stick[i]);
                  total += stick[i];
                }
                qsort(stick,scount,sizeof(int),cmp);
                minstart = stick[0];
                find = 0;
                for(i=minstart;;i++)
                {
                  if(total%i == 0)
                  {
                    memset(flag,0,sizeof(flag));
                    dfs(0,0,i,total/i); 
                    //printf("dfs(0.0.%d.%d)\n",i,total/i); 
                    
            //printf("total::%d\n",total); 
                    
            //printf("testdata::%d\n",testdata);
                    
            //printf("%d\n",i);
                    if(find == 1)
                    {
                       printf("%d\n",i);
                       break;
                    }
                  }
                }
              }
              return 0;
            }
            posted on 2012-04-06 12:53 bigrabbit 閱讀(1233) 評論(0)  編輯 收藏 引用
            亚洲午夜久久久影院伊人| 无码国内精品久久综合88 | 久久久久无码精品| 亚洲伊人久久成综合人影院 | 一本色综合久久| 久久亚洲美女精品国产精品| 狠狠色丁香久久综合婷婷| 久久久久久A亚洲欧洲AV冫 | 亚洲午夜久久久久久久久久| 99久久久精品| 久久久久久曰本AV免费免费| 色综合久久精品中文字幕首页| 中文字幕无码久久精品青草| 久久久久人妻一区二区三区vr| 久久伊人亚洲AV无码网站| 久久精品国产亚洲一区二区| 久久人妻少妇嫩草AV蜜桃| 99久久精品国产毛片| 99久久精品国内| 久久久久久毛片免费播放| 亚洲国产精品无码久久青草| 91精品国产色综久久| 久久99国内精品自在现线| 色播久久人人爽人人爽人人片AV| 久久久91精品国产一区二区三区 | 久久精品国产色蜜蜜麻豆| 国产一区二区三区久久| 日本强好片久久久久久AAA| 久久久国产99久久国产一| 亚洲国产精品狼友中文久久久| 一本大道加勒比久久综合| 精品国际久久久久999波多野| 久久婷婷国产剧情内射白浆| 婷婷久久综合九色综合绿巨人| 日韩精品国产自在久久现线拍| 粉嫩小泬无遮挡久久久久久| 亚洲国产精品无码久久久蜜芽| 亚洲AV乱码久久精品蜜桃| 色妞色综合久久夜夜| 囯产极品美女高潮无套久久久 | 久久精品国产精品亚洲毛片|