大佬教程收集整理的这篇文章主要介绍了c – 迭代任何大小的子集,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
for( int a = 0; a < size; a++ ) {
或者大小为2的子集
for( int a1 = 0; a1 < size; a1++ ) { for( int a2 = a1+1; a2 < size; a2++ ) {
或3
for( int a1 = 0; a1 < size; a1++ ) { for( int a2 = a1+1; a2 < size; a2++ ) { for( int a3 = a2+1; a3 < size; a3++ ) {
但是如何对大小为n的子集执行此操作?
根据Adam Rosenfield的回答,这可以完成这项工作
void iterate(int *a,int i,int size,int n) { int start = 0; if( i > 0 ) start = a[i-1]+1; for(a[i] = start; a[i] < n; a[i]++) { if(i == n-1) { // a is the array of inDices of size n for( int k = 0; k < size; k++ ) { printf("%d ",a[k]); } printf("\n"); } else iterate(a,i+1,size,n); } }
void iterate(int *a,int n) { for(a[i] = 0; a[i] < size; a[i]++) { if(i == n-1) Dostuff(a,n); // a is the array of inDices of size n else iterate(a,n); } } ... // Equivalent to 4 nested for loops int a[4]; iterate(a,4);
以上是大佬教程为你收集整理的c – 迭代任何大小的子集全部内容,希望文章能够帮你解决c – 迭代任何大小的子集所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。