我正在使用移位生成给定数字字符串的幂集。如何将其限制为一定的长度(例如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
}
最佳答案
只需在print语句前面放置一个过滤器。
if (subseq.length() <= 4) cout<<subseq<<endl;
关于c++ - 产生一定长度的功率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11803227/