C語言實現求字串子集問題

來源:互聯網
上載者:User

標籤:

這個問題在於實現Apriori演算法的時候需要求各個頻繁集的關聯規則,而這時需要在求得最大的頻繁集中求各個頻繁集的真子集。然後在實現這一步的時候被卡主了,第一反應是用遞迴完成,但是面對資料採礦中龐大的項目集,遞迴顯然很低效,而且估計跑不起來,所以用迭代的方法顯然比較靠譜。

網上非遞迴的方法有用二進位加法類比實現,具體就是例如有abcd,用0000加1-》0001這裡的1就映射到相應的位置的字串,例如對於0101也就是bd,那麼我們通過不停對他加1,那麼就能類比出這個過程。這個方法顯然很好,但是得運算2^n-1次.自己後來排列了下,對於1234這樣的形式,可以有112,13,14,123,124,1234223,242343344即用一個變數去迴圈1234上的元素,如何再利用一個變數去控制他每次顯示的的長度,例如如果長度為2,那麼顯示以該元素為首的所有可能,例如12,13,14這樣。思想比較簡單,實現也比較簡單。附上C代碼
#include#includevoid print(int*a,int start,int count){    while(count>=0){        printf("%d",a[start]);            start++;        count--;    }    }int main(){    int m[4]={1,2,3,4};    int length=sizeof(m)/sizeof(int);   //求長度     int i,j,k;     for(i=0;i        printf("%d\n",m[i]);        for(j=1;j                        for(k=j+i;k                print(m,i,j-1);                printf("%d\n",m[k]);                }         }        }     system("pause");    return 1;}

 

C語言實現求字串子集問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.