在m<0的时候就不要了…
多复制粘贴几次
总有一波好使的
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<memory.h>
using namespace std;
int n, m;
int biaoji[270];
int jilu[300];
int qw[27];
void dfs(int zuobiao, int q)
{
if (m < 0)return;
if (q>n)return;
if (q == n)
{
m--;
if (m >= 0)
{
for (int a = 1;a <= n;a++)cout << (char)jilu[a];
cout << endl;
}
return;
}
for (int a = 1;a <= n;a++)
{
if (m < 0)return;
if (biaoji[a] == 0)
{
jilu[q + 1] = qw[a];
biaoji[a] = 1;
if (m < 0)return;
dfs(a, q + 1);
if (m < 0)return;
biaoji[a] = 0;
}
}
}
int main()
{
int T;
cin >> T;
int u = 0;
for (int a = 1, b = 'A';a <= 26;a++)
{
qw[a] = b + a - 1;
}
while (T--)
{
memset(biaoji, 0, sizeof(biaoji));
cin >> n >> m;
memset(jilu, 0, sizeof(jilu));
printf("Case %d:\n", ++u);
for (int a = 1;a <= n;a++)
{
if (m<0)break;
jilu[1] = qw[a];
biaoji[a] = 1;
dfs(a, 1);
biaoji[a] = 0;
}
}
return 0;
}