c++ 关于求n个数里面的k个数的排列

比如有6位 0 0 0 0 0 0 要其中任意3位为1 的所有情况 如1 1 1 0 0 0
0 1 1 0 1 0 这样的所有的情况 要用什么思想啊 怎么编程实现啊

= =我怎么看怎么觉得LZ的问题是N个数里面K个数的组合......
我新手...只会穷举......
可以用6个for循环,逐位尝试,这个就不写了
也可以用递归做,这个代码贴下来,测试正常。
————————————————————————————
#include <iostream>
using namespace std;
void arrange( int );
int num[7] = { 0 }; //记录每位的结果
int main()
{
arrange( 1 );
return 0;
}
void arrange( int n )
{
int i , sum = 0;
if ( n == 7 ) //递归程序的出口,输出结果,并返回上一级
{
for ( i = 1 ; i <= 6 ; i ++ )
sum += num[i]; //如果有3个1 输出
if ( sum == 3 )
{
for ( i = 1 ; i <= 6 ; i ++ )
cout << num [i];
cout << endl;
}
return;
}
for ( i = 0 ; i < 2 ; i ++ ) //每一位都尝试0、1
{
num [n] = i;
arrange ( n + 1 );
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答