UVa729 The Hamming Distance Problem

求输出所有 含h个1的且长度为n的01串

可重集全排列 集合为{1,0}

#include<iostream>
#include<stdio.h>
using namespace std;
int cas,n,h;
int tmp[17];
void DFS(int cur,int num)
{
	if(num>h)return;
	if(cur==n)
	{
		if(num==h)
		{
		     for(int i=0;i<n;i++)
			    printf("%d",tmp[i]);
		      printf("\n");
		}
		return;
	}
	
	for(int i=0;i<=1;i++)
	{
		
			if(i==1)
			{ 
				tmp[cur]=1;
			   DFS(cur+1,num+1);
			  
			}
			else 
			{
				tmp[cur]=0;
		       DFS(cur+1,num);
			}

		
	}
	return;
}
int main()
{
     cin>>cas;
	 while(cas--)
	 {
		 
		 cin>>n>>h;
		 DFS(0,0);
		 if(cas)printf("\n");

	 }
}
posted on 2011-04-02 14:27  4.5.6  阅读(247)  评论(0编辑  收藏  举报