求输出所有 含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"); } }