版权声明:欢迎转载!拒绝抄袭. https://blog.csdn.net/qq_36257146/article/details/88361924
#include <iostream>
#include <bits/stdc++.h>
#define maxn 100
using namespace std;
int n,L;
int s[maxn];
int cnt;
int ans;
int dfs(int cur)
{
if(cnt++ == n)
{
int j = 0;
for(int i = 0;i<cur;i++)
{
if(i%4==0)
{
if(j++)
{
if(j == 17) cout<<endl;
else cout<<" ";
}
}
ans = cur;
printf("%c",'A'+s[i]);
}
cout<<endl;
return 0;
}
for(int i = 0;i<L;i++)
{
s[cur] = i;
int ok = 1;
for(int j = 1;j*2<=cur+1;j++)
{
int E = 1;
for(int k = 0;k<j;k++)
{
if(s[cur-k]!=s[cur-k-j])
{
E = 0;
break;
}
}
if(E)
{
ok = 0;
break;
}
}
if(ok)
{
if(!dfs(cur+1))
return 0;
}
}
return 1;
}
int main()
{
while(cin>>n>>L&&n&&L)
{
cnt = 0;
memset(s,0,sizeof(s));
dfs(0);
cout<<ans<<endl;
}
return 0;
}