농부 존은 그의 가축들의 족보를 공부하고있다. 그는 M(1<=M<=20)마리의 숫소와 F(1<=F<=20)마리의 암소를 갖고 있다. 그도 어떤 송아지가 다른 어떤 소의 새끼인지 모릅니다.
농부 존은 그의 농장에 있는 숫소와 암소 각각의 연속된 DNA_i 를 알고 있습니다. DNA_i는 오직 대문자 'A','C','G' 그리고 'T'로만 이루어진 25길이의 문자열을 가지고 있습니다. 그는 어떤 송아지가 어떤 암소와 숫소 한쌍의 새끼가 될 수 있는 가능성을 결정하고 싶어합니다.
농부 존이 결정을 내릴 수 있도록 도와주세요. 각각의 암소 한마리와 숫소 한마리의 한쌍에서 얼마나 많은 존의 송아지들이 소 한쌍의 새끼일 가능성이 있는지 출력해주세요.
송아지가 입력된 암소와 황소의 새끼가 될 수 있는 경우 :
3마리의 숫소와 2마리의 암소의 연속된 DNA를 고려해봅시다. :
Bull 1: GTTTTTTTTTTTTTTTTTTTTTTTT Bull 2: AATTTTTTTTTTTTTTTTTTTTTTT Bull 3: GATTTTTTTTTTTTTTTTTTTTTTT Cow 1: TTTTTTTTTTTTTTTTTTTTTTTTT Cow 2: ATTTTTTTTTTTTTTTTTTTTTTTTBull 2와 cow 1은 cow 2의 부모가 될 수 있습니다 :
Bull 2: AATTTTTTTTTTTTTTTTTTTTTTT Cow 1: TTTTTTTTTTTTTTTTTTTTTTTTT Cow 2: ATTTTTTTTTTTTTTTTTTTTTTTTcow 2의 첫번째 문자 'A'는 Bull 2에서 가져왔고, cow 2의 두번째 문자 'T'는 cow 1에서 가져왔고, 나머지 문자들은 부모 둘 중 아무나한테서 올 수 있습니다.
당신은 숫소와 암소의 DNA 배열에서 나올 수 있는 새끼의 수를 행렬로 만들어야 합니다.
입력 세부 정보 : 두마리의 숫소 DNA 다음에 세마리의 암소 DNA. 출력 세부 정보 : bull 1과 cow 1을 생각해보자 : b1: TGAAAAAAAAAAAAAAAAAAAAAAA c1: ATAAAAAAAAAAAAAAAAAAAAAAA 그들의 DNA의 중요한 부분인 {T|A} 와 {G|T} 하나의 가능성을 표현 할 수 있다. bull 0과 cow 0의 짝짓기 결과 : b1: TGAAAAAAAAAAAAAAAAAAAAAAA -- 부모, 새끼가 될 수 없다. b2: AGAAAAAAAAAAAAAAAAAAAAAAA 새끼! [TA][GT]와 연결된다. c1: ATAAAAAAAAAAAAAAAAAAAAAAA -- 부모, 새끼가 될 수 없다. c2: AAAAAAAAAAAAAAAAAAAAAAAAA -- 두번째 문자가 'A'이다; 반드시 'G'또는 'T'여야 한다. c3: TTAAAAAAAAAAAAAAAAAAAAAAA 새끼! [TA][GT]와 연결된다. 따라서. 배열의 첫번째 요소는 2입니다. 다른 요소들도 유사한 방법으로 나옵니다. 역시 오역 의역 존재합니다. 근데 마지막에 bull 0과 cow 0이 좀 헷갈릴거 같은데 배열의 [0,0]번째라고 생각하시면됩니다.※ 참고
출처:usaco 번역:iam6ear