유사 유전자
3975 단어 남방 우편 acm
모두 가 알다 시 피 인류 유전 자 는 염기 대 서열 로 볼 수 있 는데 4 가지 뉴 클 레오 티 드 를 포함 하고 A, C, G, T 로 간략화 된다.1 위 와 4 위 는 염기 'A', 2 위 와 3 위 는 염기 'C', 5 위 와 6 위 는 염기 'G', 7 위 와 8 위 는 염기 'T' 로 구 성 된 유전자 서열 'ACCAGGTT' 를 살 펴 보 자.Openxxx 는 이렇게 0, 1 행렬 을 구성 했다. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 0, 1 행렬 의 i 행 j 열 은 1 이 고 그렇지 않 으 면 0 이다.만약 유전자 서열 X 가 유전자 서열 Y 와 같이 길 고 같은 0, 1 행렬 을 가지 고 있다 면 Openxxx 는 X 와 Y 가 비슷 한 유전자 서열 이 라 고 생각 할 것 이다.문 제 는 N 길이 의 유전자 서열 두 단락 을 드 리 겠 습 니 다. Openxxx 가 비슷 한 지 판단 하 는 데 도움 을 주 십시오.
여러 조 의 테스트 데이터, 각 조 의 데이터 첫 번 째 줄 은 하나의 정수 N (1 ≤ N ≤ 1000000) 을 입력 하고, 두 번 째 줄 과 세 번 째 줄 은 각각 두 단락 의 길이 가 N 인 유전자 서열 (A, C, G, T 네 가지 문자 로 만 구성) 을 입력 한다.파일 이 끝 날 때 까지 입력 하 십시오.
각 그룹의 데이터 출력 은 한 줄 에 불과 합 니 다. 비슷 하면 "YES" 를 출력 합 니 다. 그렇지 않 으 면 "NO" 를 출력 합 니 다. 작은 따옴표 가 출력 되 지 않도록 주의 하 십시오.
1 A G 2 AA TG
YES NO
#include
using namespace std;
char a[1000001];
char b[1000001];
int main()
{
// freopen("in.txt","r",stdin);
int len,x[26],y[26],visit[26];
int i,count,tmp,ttmp;
while(scanf("%d",&len)!=EOF)
{
getchar();
int ok=1;
memset(visit,0,sizeof(visit));
gets(a);
count=0;
for(i=0;i'A';
if(!visit[tmp])
{
x[tmp]=count++;
visit[tmp]=1;
}
}
gets(b);
count=0;
memset(visit,0,sizeof(visit));
for(i=0;i'A';
if(!visit[tmp])
{
y[tmp]=count++;
visit[tmp]=1;
}
ttmp=a[i]-'A';
if(x[ttmp]!=y[tmp])
{ok=0;break;}
}
if(ok)
printf("YES
");
else
printf("NO
");
}
return 0;
}