求高手指点: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;
}本回答被网友采纳

求高手指点:Matlab中怎样实现穷举?
穷举法也要有个范围的,比如一到几万或者几十万,最好不要用多层这么大的循环,在设置一个IF语句对该范围符合的条件跳出就好啦,若是循环能进行到了最后,说明该范围中没有数符合条件。for(i=1:1000000)if(i==1000000)%若循环结束后的answer=0,那么说明1到1000000中没有符合的条件 answer=0;else...

求高手帮忙解决下面这个C++中的一个题目。看俺的代码哪里有错,谢谢了...
1.求个位数,直接用n%10就可以了,你那样子是求的最高位的值 2.既然你已经定了个位为7,直接给m赋7就可以了吧。3.你上面那样子算的时候,最后退出第一个while循环的时候,n是为0的,下面不能用这个n计算,你若是不断的用n\/=10,开始应该用个变量保存这个n的值 4.还有在main中,不能单单...

用VB怎么求24点算法啊?哪位电脑高手帮个忙啊!
首先穷举的可行性问题。我把表达式如下分成三类—— 1、 无括号的简单表达式。 2、 有一个括号的简单表达式。 3、 有两个括号的较复4、 杂表达式。 穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列,算法如下: \/* ans[] 用来存放各种排列组合的数组...

计算机基础,8位存储单元存贮数据的范围,跪求高手指点,急急急急急急急...
先保留符号位其它求反: 1111 1111, 再加1:11000 0000, 超过了8位了 对,用8位数的原码在这里已经无法表示了 关键就在这里,补码 1000 0000 为 -128 是不用怀疑的(上面的穷举),那么,回到原码处, 它的原码也是 1000 0000(超出的自动丢失),1000 0000 在原码表示什么呢? -0, 但补码却规定0没...

求如何解开加密压缩包?
这个的话,如果加密了文件,现在没了密码确实是个头疼的事情 压缩文件丢失了密码,就算是软件作者估计也很难找回来 不过也有什么暴力破解的方式的,但是时间上难以确定,理论上穷举,一定能算出来,但是机器要跑的很长时间 建议LZ还是想一下密码把,也许是你的生日,你平常用那些密码,你家里电话、手机...

相似回答