Statistics

Problem Statement for "ChromosomalCrossover"

Problem Statement

In this problem we will use strings over the alphabet ACGT. For simplicity, we will call them chromosomes.

We will consider a special genetic recombination called a chromosomal crossover. At the beginning of such a recombination we have two strings of the same length: X and Y. During the chromosomal crossover X and Y will swap their prefixes of the same length. Formally, there will be an integer k between 1 and the length of X, inclusive, with the following property: X will change into Y[0..k-1] + X[k..], and Y will change into X[0..k-1] + Y[k..]. For example, a chromosomal crossover with k = 3 will change the pair "CCCCC", "GGGGG" into the pair "GGGCC", "CCCGG".

Let lcs(X,Y) denote the length of the longest common substring of the strings X and Y. Note that the substring must be contiguous. For example, lcs("CAAA","AAAG") = 3, and lcs("CAC","CTC") = 1. For chromosomes X and Y the value lcs(X,Y) is called their similarity value.

You are given two chromosomes: two equally-long Strings A and B. You may perform an arbitrary number of chromosomal crossovers, one after another. Compute and return the largest similarity value that can be obtained.

Definition

Class:
ChromosomalCrossover
Method:
maximalLength
Parameters:
String, String
Returns:
int
Method signature:
int maximalLength(String A, String B)
(be sure your method is public)

Constraints

  • A will contain between 1 and 50 elements, inclusive.
  • A and B will contain the same number of elements.
  • Each character in A will be one of {'A', 'T', 'C', 'G'}.
  • Each character in B will be one of {'A', 'T', 'C', 'G'}.

Examples

  1. "AAAAAA"

    "TCGTCG"

    Returns: 3

    One optimal solution is to do just a single crossover with k = 3. This produces the chromosomes "TCGAAA" and "AAATCG". Their similarity value is 3 because of the common substring "AAA".

  2. "AAA"

    "CCC"

    Returns: 2

    This time we need to do it twice, first we swap prefix of length 2: ("AAA", "CCC") -> ("CCA", "AAC"). Then we swap prefix of length 1: ("CCA", "AAC") -> ("ACA", "CAC").

  3. "ATCGATCGATCG"

    "ATCGATCGATCG"

    Returns: 12

    This time we don't need to do anything.

  4. "AAAAATTTTTCCCCCGGGGG"

    "ACTTCATGTGCTAGCTGTAG"

    Returns: 4

  5. "A"

    "G"

    Returns: 0

  6. "ATCAGGCAATGGACTACTGAGCCAGGTACAT"

    "GCTCACGACGAACGGCAGTAACCCCCAGGCT"

    Returns: 15

  7. "TTGCCGTGTAGGTCTCGATACCA"

    "CGGGACTTAACTCATACACAACG"

    Returns: 5

  8. "CACGAGCCGAAGCGGAAT"

    "GTGTCCAGTTTGCACTCG"

    Returns: 7

  9. "ATCG"

    "TTTC"

    Returns: 3

  10. "ATGGC"

    "GGTAC"

    Returns: 3

  11. "GTGGATCATTAGAC"

    "TGACTTGGAAATTT"

    Returns: 6

  12. "GGTAATACTGGGTAACGGTAGTAAGAGTGTTCTCGATTGG"

    "CTTACGGACGATGCCTGGAAGATCCAACCAAGAGGATGAT"

    Returns: 14

  13. "TGCTTTAGCAAGCACAGCTTGGCCATTCAGTGA"

    "GATCTATTTATCTGGTGCGGGAGAAGTGCCAAT"

    Returns: 11

  14. "AGAAGATCCCGAA"

    "TGTACGAATAGAA"

    Returns: 5

  15. "GGACCGTTGGGATAGGAAGAGTCTTAGGCGGCATTGTCGA"

    "GAATAGGAAAGCGCGCGTACATTGTTGGTTTCGGTACTAC"

    Returns: 10

  16. "TTCAGAGGAGCATACGGCGAAATCATTCTCTGGTATTAGT"

    "TAACACTCACAAGATAGCTCCCTGTCTTGTATTTATTAAT"

    Returns: 10

  17. "CT"

    "AA"

    Returns: 1

  18. "CGCCGCTGCATATCAAA"

    "GGCTTTTGGGTAGTGAG"

    Returns: 4

  19. "GGTGACTTCGACCATAC"

    "ATTGGTGGCTGACTTCT"

    Returns: 7

  20. "CCCCTG"

    "CATACC"

    Returns: 4

  21. "GGATGAACCACCCCGGTTTTCCGCAAAAACCGTATTGAA"

    "ACTTCCGGTAGGATAGCGAAGTGCGACGTGTATATCCAC"

    Returns: 10

  22. "CACTTCACAAACACACGGCCTCAGAAATGA"

    "GAAGCCTCGCCTAATCTTCTTGGTCCCCCG"

    Returns: 9

  23. "ACCTCCTCAGGGGGATAGATTTCTATCGATACC"

    "TCTGGACCACTATCGCTCTGCACATACATCAAG"

    Returns: 14

  24. "GAATGTACCGGGCCGATTGGTGGGCTCTCCGGTTGGA"

    "TTTCGTGCCACGGCACCAACACCCAAGTTTGACATAG"

    Returns: 10

  25. "AGCATTATGAGCAATCCATTACGAACGTGTATCAAATAGTGTTTGT"

    "AACATTCGGGCGCGCGTTTGACCCTCAACCGAACAGGAGCGCAAAA"

    Returns: 12

  26. "TTCGTGTCAACTACAT"

    "CCGCTACGTCTTACCT"

    Returns: 7

  27. "GATAGTA"

    "TGACAGC"

    Returns: 3

  28. "CACCGCTATTGCCTT"

    "AGGTCTCGACGAGGG"

    Returns: 6

  29. "ACATGTTAGGCGTTATCCGTGGAACCCGAACAGTTTAAGC"

    "GTCTCTAGCATGCGGTTGGTGGTTCGCATTAAAGTATGAC"

    Returns: 9

  30. "ATCTGACAC"

    "TGCGTGCCC"

    Returns: 3

  31. "CGCTTGGCTACATTACCCCCATCGATAATAGTTGGGGCCAGCTCAA"

    "ATATTCAGTGAGGTTAAAACGTCTCATGAGATATCCAGGCGCTAAC"

    Returns: 12

  32. "GGCATACACCCGATTCGGATTTTAGCATCCTGG"

    "CCATGCTTCATCTAGCGGGTGACGTCACGCGCT"

    Returns: 13

  33. "GCGGGTCTATCTTCGGTGTCT"

    "CAGAGGGCACAATTGGCTCCC"

    Returns: 6

  34. "TTTAATGAAAGCACCAGTGCTCCATATGTATCGGTGGTCGC"

    "TTACTCGCGGGTCTGTTCAGGAGCTTGTGGTGAATCTATCG"

    Returns: 16

  35. "GCTCTGGCCGACT"

    "ATACGGCAGGAAC"

    Returns: 5

  36. "CAGTATCGCAGATCCCTGAAGAATCCATCAAAAAC"

    "GTGACCGTTCTGCCTTGGCTTAAGTAACGCTTACG"

    Returns: 9

  37. "TTG"

    "GTC"

    Returns: 1

  38. "CAC"

    "TGT"

    Returns: 1

  39. "AGCCACTCGACACGGATTCTATCTT"

    "TGTATCTTTATCCATTTTGAATAGA"

    Returns: 8

  40. "CCGATACAGTACGGCTTTCATTAGAGCCAGTGAGCGCCT"

    "ACGACTGAAGCCGTGCGTGCGTTGTATTACGCACGGCGG"

    Returns: 9

  41. "ACTCCCGTATACAGAGTTCTTGAGCAATTCGGAACTTTCGCATAGGTA"

    "GTACCTAGACGTTTAGTGTCGGAATGTTTATTCACGAGAGGGAAATAC"

    Returns: 12

  42. "TCTTTAAGTATTACCCGAAGCTATAAGTCCCCTC"

    "CTGAGATTTGCAGATGGGGATGCGGGAAAGGAAC"

    Returns: 14

  43. "AGGCCAGTCTAGCCGG"

    "TCATAATGGCATCTAA"

    Returns: 7

  44. "AGGCTT"

    "GTTTAG"

    Returns: 3

  45. "GGCCGTTCAATATCGTGAGCATAGACTGCCAATTGAACTAACGCCATAAT"

    "GAACTTGGTAGAGGGCTAGGAATTTACCTGTCTTACTCTGTTCTCAAATC"

    Returns: 13

  46. "GTTGATGCTATGAGGTA"

    "TCGGAGAGTGCATATAG"

    Returns: 6

  47. "GTTATGTATTGGCTAA"

    "CTCGTAATGATTCCGA"

    Returns: 5

  48. "G"

    "A"

    Returns: 0

  49. "ACGATGGAAGTAAGAGTAAG"

    "CTCCGGCCGTCCGATCCAGT"

    Returns: 10

  50. "CCTTTCATTGTCACGATCAGACGCTTATTACAG"

    "CTTAGTGTAAGCATGCCGTATGCTGCAAATTGC"

    Returns: 10

  51. "GGCACAATGTGGTTGCCAGAGCAACGGTACACCA"

    "GTAAGCGTCATGAATTGTAATACTTCGTCTGAGG"

    Returns: 11

  52. "CCAAGTGAAGG"

    "TTGACACAGCT"

    Returns: 5

  53. "GCCGTATAACATTGA"

    "AAACACAACGGCTCG"

    Returns: 7

  54. "ACTAGGATTGATGGACGGGTTGAACCACGTGTCACCTG"

    "AGGAGGCTGACTAGTGGGAGGAACCAGCACTGAACCGC"

    Returns: 10

  55. "ACCCCGAATTGTGGTTTCTCATTTTAGCCGGAGCACTCG"

    "AACGAGTTGCTCACACTCATCGTATCTACTTGTATAGAT"

    Returns: 15

  56. "GAAAAAGAAAGAAAG"

    "GGGAAAGAAGAGGAA"

    Returns: 9

  57. "GGAAGAAAGGGAAGAGAA"

    "GGGAGAAGAAGAGAGAAA"

    Returns: 10

  58. "GGGAGAAAAGAAAGAAAAAGGAAGAAAGGG"

    "AGAAGAGGAGAAGGAGGGAGAGAGGGAAGG"

    Returns: 18

  59. "GAAGAAGGAAGAGGAAGAAGAAAGAA"

    "GAAGAGGAGGGGAAGAAGAAGGAAGA"

    Returns: 18

  60. "AGGAAGGAGAAGGGAAAGAAGAAAGGGAGGAGGGGAAGGA"

    "AGAAGGAAGGAGGAGAGGAAGAAAAGAAGAAAGGAGGGGG"

    Returns: 18

  61. "AAGAAGAGGAGGGAGAAG"

    "GAAGAAAGAAGAAAGGGG"

    Returns: 11

  62. "AAGGAGGGGGGGGAAAGGAGGAAAGAGAAAAAGGG"

    "AGGGGGAAAAGAGGAAAAAAAGGGGAAAGGGAGAA"

    Returns: 19

  63. "AGGAGAGAAAAGAGGAAGAGGGGAAGGAG"

    "GGGAAGAGAAGAGGGAGGAAAGAAAAAAG"

    Returns: 14

  64. "AGGAAA"

    "AGGGAA"

    Returns: 4

  65. "GAAGGAAAAAGGG"

    "GAAGGGGGAGGAA"

    Returns: 9

  66. "GAGA"

    "AGAG"

    Returns: 3

  67. "GGAGGAAGGAGAG"

    "AAAGGGAAGAAAA"

    Returns: 9

  68. "GAAAGGGAGGAAGGAAGGGGA"

    "AAAAAAAAAGGAAGAAGGGAG"

    Returns: 14

  69. "AGAAAGGGGAAAA"

    "AAGGGGAGAAGAA"

    Returns: 10

  70. "AAGGAAGAAAAGGAGAGGAGAAGGGGGGAAGAAAGGGGGGGAGGG"

    "GAAAAGAGAGAGAAGGAAAAGGAAGGAAAGAGAAGGGAGAAAGGA"

    Returns: 28

  71. "AG"

    "GG"

    Returns: 1

  72. "AGGAAGGAAGAAAGGGAGAAG"

    "GGAGAAAGAAAAAAAAGAGGG"

    Returns: 17

  73. "GAGGAGGGAGGAAGAAAGAGGAGGGAGAGGAGGGAGGAAAAAGAA"

    "AAAAAGAAGAAAGAAAGAAGAGAAAGAAGAGGGAGAGGAGGGGGA"

    Returns: 34

  74. "G"

    "A"

    Returns: 0

  75. "GGGA"

    "GAAG"

    Returns: 3

  76. "AAGAGAGGAGGGAAGAGGGAAAGAAAGGAAAGAAGGAAAGAG"

    "GAAGGGGAAAAAGGAGAAGAGGAAGAAAGGAAGGGAGGGGAG"

    Returns: 27

  77. "AAAGAAGAGGAAGGGGGAAGAGGAAGGAGAAG"

    "GGGGAAAGAAAGGGAAGAAAGGAAGAAGAGGA"

    Returns: 19

  78. "AGGAGAGGAGGAAAAAGGAGGGGGAG"

    "AGGGGAAAAGAGGAAAAGGGGAAGAA"

    Returns: 14

  79. "GAAAAAGAAAAAGGAGAAGAAGGGGAGGGGGGAGGAGAAAG"

    "AGAAGAAAGGAAAAGGAAAAAGGAGGGAGGGGGAGGAGAAG"

    Returns: 17

  80. "AGAAAAGAGGGAGAAAAAAAAGGAGGAGGA"

    "AAGGGAGAAAGGGAAGGAAAAAGGAGGAAA"

    Returns: 16

  81. "GAAGAAAAGGAAAGAGGGAAAGGAGGAGGA"

    "AAGAGGAGAGGAAGAAAAAAAAGAGAGAAA"

    Returns: 15

  82. "AGAAAGAGAGGAAGGAAGGGGGAAGAAGAAGGAGAAGGAG"

    "AGGAAGGAGGGAAAGGGGGGAAAGAGGGGAAAGGGGGGGG"

    Returns: 21

  83. "GAAGGAAAGGAAGGAAGGAAGAGAAAAAGGGAAGG"

    "GGGAAGAAGAGAGAGGGAGAGGGAGAAAAGGAGAA"

    Returns: 23

  84. "AGAGGAGAGGAGGAGAAAGGA"

    "GGGGGAGGAGAAAAGAGAGGA"

    Returns: 13

  85. "GGAGAAAGGAAAGGAAAAGGGGAGGAAAGGAAAAAGAAAGAAGA"

    "AGGAGAGAAGAGAGGAGGAAAAAGGAGGAGGAAGAGAGGAGGGG"

    Returns: 29

  86. "GGAAAAGGAAAAGAGGAAGAGAGGGGAAAAGGAGAAGG"

    "GGGAAAGAAAGGAGGGGAAAAGAAAGAGAAGAGGGGAA"

    Returns: 19

  87. "GAGAGAAGGGGGGA"

    "AGGGAGAGGAAAGG"

    Returns: 9

  88. "AG"

    "GA"

    Returns: 1

  89. "GGGGGAAAAGAAGAAGAGAGGGGGAAAAGGAG"

    "GAGAGGGGGGGAGAAAGAGGGAAGAGGGAAAG"

    Returns: 22

  90. "AAGAAGAAAAAGGGAG"

    "GGGAGGGAAGGGGGAG"

    Returns: 8

  91. "GAAGAAGAGGGAAGGGAAGGAAGGAGGAAAGAAGGAGGAAG"

    "GAGGAAAGAAAGAAGAGAAAGGAGGGAAGAAGAGAAAGGGG"

    Returns: 22

  92. "GGAAAAAGGAGAAGGAAGAGAGAAG"

    "GGAAAGAGGGGAAAAAAAAAGAGGG"

    Returns: 13

  93. "GGGGAGGGGGGAGGGAAGAGAAGAA"

    "AGAGGAAAGAAAAAGGGGGGAGGAA"

    Returns: 18

  94. "GAAGGAAGGGGAGGGAA"

    "GAGAAGGGAGAGAAGGA"

    Returns: 13

  95. "GGGAGGG"

    "GAGAGAA"

    Returns: 5

  96. "AGAAGG"

    "GGAGGG"

    Returns: 3

  97. "AAGAAGGGGAGAAAGGAGGAGGGAAGGAGAAAGAGAAAAAAAGA"

    "AAGAGGAGAAGGAGGGGAGAAGAAGGGAAAGGGAAGAGAAGAAA"

    Returns: 22

  98. "AAAAGAAGGGAAGAGAAA"

    "GAAGGGGGGGGGGAAGGA"

    Returns: 12

  99. "AAAGGAGGAGAAAAGAGAAGGGAG"

    "GAAAGAAGGAGGGGAAAAGGGGGG"

    Returns: 15

  100. "AAAAAAGGAGGGAAAAAGGAAGAGGGGAAAGAAAGGAAGGGGAGAAA"

    "AAAGAGGGGGAAGAGAGGGGAGAGAAAGAGAGAAAAAGAAGGAAAGA"

    Returns: 22

  101. "GGGAAAAAGAAGAAGGAAA"

    "GAAAGGAGGAAGGAGGAGG"

    Returns: 15

  102. "AAGGAGAAAAAAAGGAAAGAGGGGGAGG"

    "AGAAAGGAAGGGGGAAGGGGGAAAAGAA"

    Returns: 21

  103. "AGGAAGAAAAAAAGAGGAGAGAGAAGAAGGGAAAAGGGAAGGAGGGA"

    "GAGGGGGAAAGGAGAGAGAGAGAAGAAAGAGAGGGAGAAGGAAAAAG"

    Returns: 32

  104. "GAA"

    "AGG"

    Returns: 2

  105. "AGGGAGAGAAAAAAGAGGAGGGAAGAAAAGAGGAGGAAAAAGGGGGA"

    "AGGAGGGGAAGGGAAGAAAAGGAGGAAGGAAAGGGGAGGAGGAAGGA"

    Returns: 19

  106. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    Returns: 46

  107. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    "ATCGGGCTGTCGTCGATGCTGGGTCGGTCGGTGCTGAGCGTGTCGA"

    Returns: 24

  108. "GAGGGGAAGGGAGGGAGAAGAGAAAGAAGAAGGAGAGGGGAAGGGAAGAG"

    "TTAATTTTATATTATTATAATTTTAATATATAAATTTTAATTATTTTATT"

    Returns: 22

  109. "ATTTCCATCAAACATAACCAATCATTACTTAATCCCCCTACAAAC"

    "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"

    Returns: 23

  110. "ACATTTTTTTTTGGG"

    "CACCCCTTTTTTTTT"

    Returns: 14

  111. "ATGCCTCCCGTTTCGTCTAGAAA"

    "GACGGACGCTACAATCTGCGGGA"

    Returns: 8

  112. "GACAGTTTGTTTGCACG"

    "GCACGCCCGTTTGTTTG"

    Returns: 13


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: