UVa 129 (回溯法) Krypton Factor

时间:2023-03-08 20:59:48

回溯法确实不是很好理解掌握的,学习紫书的代码细细体会。

 #include <cstdio>

 char S[];
int n, L, cnt; int dfs(int cur)
{
if(cnt++ == n)
{
for(int i = ; i < cur; ++i)
{
if(i % == && i) puts("");
else if(i % == && i) printf(" ");
printf("%c", 'A' + S[i]);
}
printf("\n%d\n", cur);
return ;
}
for(int i = ; i < L; ++i)
{
S[cur] = i;
int ok = ;
for(int j = ; j* <= cur + ; ++j)
{
int equal = ;
for(int k = ; k < j; ++k)
if(S[cur-k] != S[cur-k-j]) { equal = ; break; }
if(equal) { ok = ; break; }
}
if(ok) if(!dfs(cur+)) return ;
}
return ;
} int main()
{
while(scanf("%d%d", &n, &L) == && n)
{
cnt = ;
dfs();
} return ;
}

代码君