// step 已选的元素个数
//pinum 要选的元素的数量
// picked 选的元素
int n,num[N],picked[N],pinum;
void pick(int step,int x){
// 这个路径选了 m个了就返回了
if(step == pinum + 1)
{
for(int i=1;i<step;++i)
cout<< picked[i]<<" ";
cout<<endl;
return;
}
// i的初始化是x是递增的,是避免出现重复的
for(int i = x;i<=n;++i)
{
picked[step] = num[i];
pick(step+1,i+1);
}
}
int main()
{
cin>>n>>pinum;
for(int i=1;i<=n;++i)
cin>>num[i];
pick(1,1);
return 0;
}
(DFS)求出n个数中选择m个数的所有可能
最新推荐文章于 2022-03-10 17:37:38 发布