描述:和前面的几道水题一样,还是两种代码,使用库函数的话耗时比较少一点,用刘汝佳的生成可重集排列的方法耗时多,没什么难度
代码一:
#include
#include
#include
#include
using namespace std;
int main()
{
//freopen("a.txt","r",stdin);
char s[20];
int n,len,m;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&len,&m);
memset(s,0,sizeof(s));
for(int i=0;i
{
printf("%s\n",s);
}while(next_permutation(s,s+len));
if(n) printf("\n");
}
return 0;
}
代码二:
#include
#include
#include
using namespace std;
void print_permutation(char *s,char *str,int len ,int cur)
{
if(cur==len) printf("%s\n",str);
else for(int i=0;i
{
int c1(0),c2(0);
for(int j=0;j
str[cur]=s[i];
print_permutation(s,str,len,cur+1);
}
}
}
int main()
{
//freopen("a.txt","r",stdin);
char s[20],str[20];
int n,len,m;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&len,&m);
memset(s,0,sizeof(s));
for(int i=0;i
print_permutation(s,str,len,0);
if(n) printf("\n");
}
return 0;
}