C++ 生成特定长度的功率集

C++ 生成特定长度的功率集,c++,string,permutation,C++,String,Permutation,我使用位移位生成给定数字字符串的幂函数集。如何将其限制在特定的长度(例如4),从而通过不查找不需要的长度的子序列来提高执行时间 例如:如果给定的数字字符串是10292,则只需要以下子序列:1029、102、109、029、0292等(仅包含数字4、3、2、1) 以下是我的代码: scanf("%s", &str); //read numeric string int n = strlen(str); //find size of string // loop to find subse

我使用位移位生成给定数字字符串的幂函数集。如何将其限制在特定的长度(例如4),从而通过不查找不需要的长度的子序列来提高执行时间

例如:如果给定的数字字符串是
10292
,则只需要以下子序列:1029、102、109、029、0292等(仅包含数字4、3、2、1)

以下是我的代码:

scanf("%s", &str); //read numeric string
int n = strlen(str); //find size of string

// loop to find subsequences or powerset
for ( i = 1; i < ( 1 << n ); ++i ) {
    string subseq;
    for ( j = 0; j < n; ++j ) {
        if ( i & ( 1 << j ) ) {
            subseq+=str[j];
        }          
    }

    cout << subseq << endl; //print the subsequence
}
scanf(“%s”和&str)//读取数字字符串
int n=strlen(str)//查找字符串的大小
//循环以查找子序列或功率集

对于(i=1;i<(1只需在print语句前面放置一个过滤器

if (subseq.length() <= 4) cout<<subseq<<endl;

if(子问题长度()这也是家庭作业吗?“不,不是家庭作业。这是一个代码问题。”JaHajj:不,我必须考虑给定字符串的所有数字。只考虑那些尺寸是“是”的后人,对不起,我误解了,我已经删除了我的评论。你有答案。我想了想,甚至我试过了。但是它不会节省宝贵的时间来计算SUPS。不希望的长度的序列,这就是我想要做的。啊,你希望它是快速的。你应该在问题中增加这一要求。@Stalinusbramaniam:在这种情况下,我认为你需要放弃你的“位移位”方法,转而使用递归方法。递归方法可以很容易地计算到目前为止包含的字符数,并在需要时停止加上递归方法不受整数位数的限制。