求高手指点:Matlab中怎样实现穷举?

比如说要在18个数据中找出7个数据的所有数据组合,怎样穷举出所有的7个点的组合?希望给出具体的程序实现,谢谢!

第1个回答  推荐于2016-07-14
穷举法也要有个范围的,比如一到几万或者几十万,最好不要用多层这么大的循环,在设置一个IF语句对该范围符合的条件跳出就好啦,若是循环能进行到了最后,说明该范围中没有数符合条件。
for(i=1:1000000)
if(i==1000000)%若循环结束后的answer=0,那么说明1到1000000中没有符合的条件
answer=0;
else
anser=1;%若循环结束后的answer=1,说明有值符合条件
end
if()%括号中填判断条件
break;
end
end
第2个回答  2011-12-10
下面这个程序是C语言的。
把下面这个程序修改一下,即可!
void print(int *arr, int select) {
for (int i = 0; i < select; ++i)
printf("%d ", arr[i]);
printf("\n");
}

void swap(int *i1, int *i2) {
int temp = *i1;
*i1 = *i2;
*i2 = temp;
}

void permutate(int *arr, int all, int select, int index) {
if (index == select) {
print(arr, select);
return;
}
for (int i = index; i < all; ++i) {
swap(arr + index, arr + i);
permutate(arr, all, select, index + 1);
swap(arr + index, arr + i);
}
}

void permutate(int *arr, int all, int select) {
permutate(arr, all, select, 0);
}

int main()
{
int arr[] = {1, 2, 3, 4, 5};
permutate(arr, 5, 3);

return 0;
}本回答被网友采纳
相似回答