|
推荐
楼主 |
发表于 2014-10-18 18:32:23
|
只看该作者
本帖最后由 diggersun 于 2014-10-18 18:39 编辑
现在我们将它改成5个数字(0,1,2,3,4)中选3个的组合,所谓组合,就是没有顺序,我们也可以认为,是后面一个数字大于前面一个数字的排列。
- #include <iostream>
- using namespace std;
- const int m=5,n=3;
- int a[n];
- void mysearch(int i)
- {
- int j,k;
- if (i==n)
- {
- for (j=0; j<=i-1; j++) cout<<a[j];
- cout<<endl;
- }
- else for (k=(i==0?0:a[i-1]+1); k<=m-1; k++)
- {
- a[i]=k;
- mysearch(i+1);
- }
- }
- int main()
- {
- mysearch(0);
- return 0;
- }
复制代码 因为后面一个数字比前面一个大,所以绝对不会有重复,可以省略B数组,程序13行是控制循环变量K的值,做法比较特殊,当i==0的时候说明是第一个位置上的数字,从0起步,否则,从上一个数字+1 起步,这个小技巧请大家学会。 |
|