UVa 129 Krypton Factor

不难,细心,先写框架,逐步完善即可。

代码如下:

   
     
  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4. int n, L, ans[80], cnt(0), ove = false;;
  5. bool isHard(int cur) {
  6. int bor = (cur + 1) / 2;
  7. for (int i = 1; i != bor + 1; ++i) {
  8. bool ok = false;
  9. for (int j = 0; j != i ; ++j) {
  10. if (ans[cur - j] != ans[cur - i - j]) {
  11. ok = true;
  12. break;
  13. }
  14. }
  15. if (!ok) return false;
  16. if (i == bor && ok) return true;
  17. }
  18. }
  19. void dfs(int cur) {
  20. if (ove) return;
  21. if (cnt == n) {
  22. ove = true;
  23. for (int i = 0; i != cur + 1; ++i) {
  24. if (i && !(i % 4) && i != 64) printf(" ");
  25. if (i == 64) printf("\n");
  26. printf("%c", ans[i] + 'A');
  27. }
  28. printf("\n%d\n", cur + 1);
  29. } else {
  30. for (int i = 0; i != L; ++i) {
  31. ans[cur + 1] = i;
  32. if (isHard(cur + 1)) {
  33. ++cnt;
  34. dfs(cur + 1);
  35. }
  36. }
  37. }
  38. }
  39. int main() {
  40. while (scanf("%d%d", &n, &L) == 2 && n) {
  41. ove = false;
  42. cnt = 0;
  43. for (int i = 0; i != L; ++i) {
  44. ans[0] = i;
  45. ++cnt;
  46. dfs(0);
  47. }
  48. }
  49. return 0;
  50. }





你可能感兴趣的:(uva)