729

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;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *