[동적 기획 DP,2 차원 동 귀]poj 1080,Human Gene Functions
주의,세 가지 상황:
1)ai 와 bi 가 일치(a[i]와 b[j]가 같 든 안 맞 든 상 관 없 이 일치 하지 않 아 도 되 기 때문에 대 가 를 부담 할 뿐 입 니 다!!코드 주석 이 떨 어 진 부분 을 보면 무슨 뜻 인지 알 수 있다).
2)ai 는 빈 칸 과 일치 하고 ai-1 과 bj 와 일치 합 니 다.
3)bj 와 빈 칸 이 일치 하고 ai 와 bj-1 이 일치 합 니 다.
# include<iostream>
using namespace std;
# define N 103
char a[N],b[N];
int r[N][N];
int match[N][N];
void Init()
{
match['A']['A']=match['C']['C']=match['G']['G']=match['T']['T']=5;
match['A']['C']=match['C']['A']=match['A']['T']=match['T']['A']=match[' ']['T']=match['T'][' ']=-1;
match['A']['G']=match['G']['A']=match['C']['T']=match['T']['C']=match['G']['T']=match['T']['G']=match['G'][' ']=match[' ']['G']=-2;
match['A'][' ']=match[' ']['A']=match['C']['G']=match['G']['C']=-3;
match['C'][' ']=match[' ']['C']=-4;
}
int main()
{
int t,i,j,k,l1,l2,t1,t2;
Init();
cin>>t;
for(i=1;i<=t;i++)
{
r[0][0]=0;
cin>>l1;
for(j=1;j<=l1;j++)
{
cin>>a[j];
r[j][0]=r[j-1][0]+match[a[j]][' '];
}
cin>>l2;
for(k=1;k<=l2;k++)
{
cin>>b[k];
r[0][k]=r[0][k-1]+match[' '][b[k]];
}
for(j=1;j<=l1;j++)
{
for(k=1;k<=l2;k++)
{
/*
if(a[j]==b[k])
{
r[j][k]=r[j-1][k-1]+match[a[j]][b[k]];
}
else
{
t1=r[j-1][k]+match[a[j]][' '];
t2=r[j][k-1]+match[' '][b[k]];
r[j][k] = t1>t2? t1:t2;
}
*/
r[j][k]=r[j-1][k-1]+match[a[j]][b[k]];
r[j][k]= r[j][k]>r[j-1][k]+match[a[j]][' ']? r[j][k]:r[j-1][k]+match[a[j]][' '];
r[j][k]= r[j][k]>r[j][k-1]+match[' '][b[k]]? r[j][k]:r[j][k-1]+match[' '][b[k]];
}
}
cout<<r[l1][l2]<<endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
코틀린의 함수함수는 예를 들어 main() 함수와 같이 이미 사용한 것입니다. 함수는 코드를 매우 쉽게 재사용하는 데 사용됩니다. 그러나 오늘 우리는 우리 자신의 함수를 만드는 방법을 배울 것입니다. 약 기능: 특정 작업을 수행...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.