zoukankan      html  css  js  c++  java
  • C语言实现求字符串子集问题

    这个问题在于实现Apriori算法的时候需要求各个频繁集的关联规则,而这时需要在求得最大的频繁集中求各个频繁集的真子集。然后在实现这一步的时候被卡主了,第一反应是用递归完成,但是面对数据挖掘中庞大的项目集,递归显然很低效,而且估计跑不起来,所以用迭代的方法显然比较靠谱。

    网上非递归的方法有用二进制加法模拟实现,具体就是
    例如有abcd,用0000加1-》0001这里的1就映射到相应的位置的字符串,例如对于0101也就是bd,那么我们通过不停对他加1,那么就能模拟出这个过程。这个方法显然很好,但是得运算2^n-1次.
    自己后来排列了下,对于1234这样的形式,可以有
    1
    12,13,14,
    123,124,1234
    2
    23,24
    234
    3
    34
    4
    即用一个变量去循环1234上的元素,如何再利用一个变量去控制他每次显示的的长度,例如如果长度为2,那么显示以该元素为首的所有可能,例如12,13,14这样。思想比较简单,实现也比较简单。附上C代码
    #include
    #include
    
    void 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
    ",m[i]);
            for(j=1;j
                
                for(k=j+i;k
                    print(m,i,j-1);
                    printf("%d
    ",m[k]);    
                } 
            }    
        } 
        system("pause");
        return 1;
    }
  • 相关阅读:
    ASP.NET程序中常用的三十三种代码[低]
    IIS 6.0 优化
    JS判断数字字母中文
    javascript函数
    ASPJpeg和ASPUpload组件的一些属性和方法
    DOMDocument 的属性及一些javascript操作方法
    HTML/JS代码集合
    SEO常用工具站
    C#操作Word/excel文档
    高效的Session读写.
  • 原文地址:https://www.cnblogs.com/sunrye/p/4570799.html
Copyright © 2011-2022 走看看