简单的字典排序,没什么难度,用c++的next_permutation()函数就可以了
#include<math.h>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#define MAX_SIZE 1000 + 10
using namespace std;
int main()
{
int N,cases,i,j,k;
int m,n;
char mat[MAX_SIZE];
scanf("%d",&N);
for(cases=0;cases<N;cases++)
{
scanf("%d%d",&m,&n);
for(i=0;i<m-n;i++)
mat[i]='0';
for(;i<m;i++)
mat[i]='1';
mat[i]='\0';
do
{
puts(mat);
}while(next_permutation(mat,mat+m));
if(cases<N-1)
printf("\n");
}
return 0;
}