说说:
这题的意思就是给你一个01串的总长度和其中1的个数,要你求出该串的所有排列,并按照字典升序输出。其实这道题和前一道Generating Fast是非常类似的,甚至更为简单。要做的就是一个DFS给每个位分配位置,若0没有用完,则先分配0。1没有用完,则接着分配1。最后将结果输出即可。
源代码:
#include <stdio.h>
#define MAX 16+5
int N,H,onum,znum;
char p[MAX];
void dfs(int,int,int);
int main(){
int T;
// freopen("data","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&H);
znum=N-H;//0的个数
onum=H;//1的个数
p[N]='