Using Back Track Algorithm:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int N,H;
int backtrack(int idx,int cnt,int a[20])
{
if(cnt==N-H)
{
for(int i=1;i<=N;i++)
cout<<a[i];
cout<<"\n";
return 0;
}
for(int i=idx;i<=N;i++)
{
a[i]=0;
backtrack(i+1,cnt+1,a);
a[i]=1;
}
return 0;
}
int main()
{
int t;
string s;
cin>>t;
getchar();
getline(cin,s);
int str[20];
while(t--)
{
cin>>N;
getchar();
cin>>H;
getchar();
getline(cin,s);
for(int i=0;i<20;i++)
str[i]=1;
backtrack(1,0,str);
if(t)
cout<<"\n";
}
return 0;
}
Using Next_permutation() method in C++
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int N,H;
int main()
{
int t;
string s;
cin>>t;
getchar();
getline(cin,s);
int str[20];
while(t--)
{
cin>>N;
getchar();
cin>>H;
getchar();
getline(cin,s);
for(int i=0;i<N-H;i++)
str[i]=0;
for(int i=N-H;i<N;i++)
str[i]=1;
do{
for(int i=0;i<N;i++)
cout<<str[i];
cout<<"\n";
}
while(next_permutation(str,str+N));
if(t)
cout<<"\n";
}
return 0;
}