题意:
按字典序从小到大输出含有h个1总长为n的0,1序列;
思路:
因为n比较小,所以直接dfs。也可以用全排列的方法做
注意:
输入时案例之间会有空行,但输入时不用理会;最后一个案例后不能输出空行,否则会出错(不知道为什么不是PE),在这错了两次
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ans[100],h,n;
void dfs(int cnt,int num)
{
if(cnt==n)
{
if(num==h)
{
for(int i=0;i<n;i++)
printf("%d",ans[i]);
printf("\n");
}
return ;
}
ans[cnt]=0;
dfs(cnt+1,num);
ans[cnt]=1;
dfs(cnt+1,num+1);
}
int main()
{
int t,i,j,k;
cin>>t;
while(t--)
{
cin>>n>>h;
dfs(0,0);
if(t)
printf("\n");
}
return 0;
}