【发布时间】:2017-04-01 20:05:37
【问题描述】:
在回溯时陷入如何设置位的问题。无法在输出中排除 001,010 和 100。提供一个算法会很有帮助。
Eg:n=3,k=2,arr={0,0,0},index=0
void printwithKbitset(int n,int k,int arr[],int index)
{
if(k==0)
{
for(int i=0;i<3;i++)
cout<<arr[i];
cout<<"\n";
return;
}
if(n>1)
printwithKbitset(n-1,k,arr,index+1);
if(k>0)
{
arr[index]=1;
printwithKbitset(n,k-1,arr,index);
arr[index]=0;
}
Output:
001
011
010
101
110
100
【问题讨论】:
-
“提供一个算法会很有帮助。”是的,它会,但算法是什么?目标是什么?
-
练习用
-
@user4581301 在没有帮助的情况下实现了目标,不,谢谢。
标签: c++ algorithm combinations backtracking