//#include#include" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

hdoj 1258 SUM IT UP

系統 2063 0
  

程序的思想是:輸入數據是,先使用快排對其從大到小進行排序,然后記錄相同數據的個數,比如4 3 3 2 2 1 1,最后的數據變成4 3 2 1 ,并且同時數據的個數f[]變成1 2 2 2

然后就是遍歷,相同的數據如果不能得到最后的結果,下一次就不會遍歷。

?

//剪枝有這幾個

首先:從大到小排序,剪枝1

再者:如果當前的sum比要遍歷的數據小,則跳過這個數據

?

利用一個vector來記錄結果

?

    #include <iostream>

//#include <fstream>

#include <vector>

#include <algorithm>

using namespace std;

/*0MS	344K*/

//function

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

void dfs(int index,int sum);



//var

int a[13];       //輸入數據 

int b[13];       //記錄從大到小的數據,相同數據個數記錄在f[]中 

int l;           //b[]數據的長度 

int f[13];        //記錄當前數據b[]的個數

vector<int> c; //結果   

bool flag;

//fstream fin;

int main()

{

    //fin.open("1258.txt",ios::in);

    int t,n;

    while(cin>>t>>n&&n!=0)

    {

        flag=false;

        for(int i=0;i<n;i++)

        {

            cin>>a[i];

        }

        memset(f,0,sizeof(f));    

        qsort(a,n,sizeof(a[0]),cmp);

        //把相同的數據合并在一起 

        int cur=a[0]; //當前數據是多少 

        int j=0;

        b[j]=cur;

        for(int i=0;i<n;i++)

        {

              if(a[i]==cur)

                 f[j]++;

              else

              {

                   cur=a[i];

                   b[++j]=cur;

                   i--;

              }    

        }

        l=++j;



        cout<<"Sums of "<<t<<":"<<endl;

        dfs(0,t); 

        if(!flag)

           cout<<"NONE"<<endl;

    }

    system("pause");

    return 0;

}





void dfs(int index,int sum)

{

   if(sum==0)

    {

        flag=true;

        int length=c.size();

        for(int i=0;i<length-1;i++)

            cout<<c[i]<<"+";

        cout<<c[length-1]<<endl;

    }

    else

    {

        for(int i=index;i<l;i++)

        {

            if(b[i]>sum) continue;//剪枝 

            else

            {   

                c.push_back(b[i]);

                f[i]--;

                if(f[i]==0)

                  dfs(i+1,sum-b[i]);

                else if(f[i]>0)

                  dfs(i,sum-b[i]);

                f[i]++; 

                c.pop_back();  

            }            

        }

    }

}



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

{

    return ((*(int *)b)-(*(int *)a));

}
  


?

?

hdoj 1258 SUM IT UP


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩在线播放网址 | www.av视频| 成人一区二区三区 | 欧美国产日韩在线 | 日韩在线 在线播放 | 国产精品久久av | 日本午夜网站 | 99综合网| 精品欧美乱码久久久久久1区2区 | 国产成人av一区二区三区 | 亚洲狠狠婷婷综合久久蜜桃 | 国产精品系列在线 | 91久久久久久久一区二区 | 99精品热| 在线视频不卡国产在线视频不卡 | 欧美国产日韩在线 | 日韩中文字幕视频在线 | 日韩 亚洲 欧美 中文 高清 | 精品欧美亚洲韩国日本久久 | 国产激情一区二区三区四区 | 三级理论中文字幕在线播放 | 亚洲精品美女视频 | 欧美国产精品一区二区 | 一区二区三区高清视频在线观看 | 一级黄色片在线 | 国产真实乱子伦清晰对白 | 天天操天天射天天爽 | 国产精品99久久久久久动医院 | 日韩三级免费 | 在线视频 中文字幕 | 男女做性无遮挡免费视频 | 欧美疯狂xxxx乱大交视频 | 一区二区免费看 | 中国一级免费视频 | 2014亚洲天堂 | 奇米影音先锋 | 好爽~好硬~好紧~蜜芽 | 一级毛片真人免费观看 | 一级毛片日本特黄97人人 | 日韩精品无码一区二区三区 | 视频在线观看一区二区 |