UVa 129 困难的串

时间:2024-08-07 14:06:14

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=65

题意:输出不包含两个相邻的重复子串。

思路:这就跟八皇后问题是一样的,注意判断子串是否相同就可以了。

 #include<iostream>
using namespace std; int n, l;
int str[];
int flag;
int cnt; void dfs(int cur)
{
if (cnt++ == n)
{
for (int i = ; i < cur; i++)
{
if (i % == && i) cout << endl;
else if (i % == && i) cout << " ";
char c = 'A' + str[i];
cout << c;
}
flag = ;
cout << endl;
cout << cur << endl;
return;
}
else
{
for (int i = ; i < l; i++)
{
str[cur] = i;
int ok = ;
for (int j = ; * j <= cur + ; j++)
{
int equal = ;
for (int k = ; k < j; k++)
{
if (str[cur - k] != str[cur - k - j])
{
equal = ;
break;
}
}
if (equal)
{
ok = ;
break;
}
}
if (ok) if(!flag) dfs(cur + );
}
}
} int main()
{
while (cin >> n >> l && n)
{
flag = ;
cnt = ;
dfs();
}
return ;
}