718. 최장 중복 서브그룹
718. 최장 중복 서브그룹
두 개의 정수수조
A
와 B
를 주고 두 개의 수조에서 공용되고 길이가 가장 긴 자수조의 길이를 되돌려줍니다.예1:
:
A: [1,2,3,2,1]
B: [3,2,1,4,7]
: 3
:
[3, 2, 1]。
설명:
최장 연속 문자열, 최장 서브 시퀀스 (반드시 연속하지는 않음)
최장 연속 문자열은 이 문자열이 연속적이어야 한다. 그러면 동적 기획의 사상에서 d[i][j]를 A에서 i자리로 끝내고 B에서 j로 끝내는 위치의 문자열의 최장 연속 문자열 길이로 설정한다.
그러면 상태 전환 방정식은 다음과 같습니다.
D[i][j]=a[i]==b[i]?d[i-1][j-1]+1:0
설명: i에서 시작하여 B를 처음부터 반복한다. 현재 j위치 문자가 i와 같다는 것을 발견하면 한 칸 +1을 함께 한다. 그렇지 않으면 처음부터 지금까지 연속적인 공통 서브열이 없다는 것을 의미한다.이 해석은 i=1에서 볼 때 i가 1과 같을 때 같은 문자를 만나 다음 매칭 문자열로 들어간다. 지금 두 번째를 고려하면 두 번째도 상응하는 위치에 매칭되면 똑같이 1을 더한다. 공교롭게도 이 두 번째 문자가 i=1이라는 문자 뒤에 있으면 다음 문자로 늘어난다.
전체 이 과정은 마치 모든 자열이 스스로 성장하는 것처럼 보인다.연속 문자열을 만나면 점차 밀어낸다.
Code:
class Solution {
public:
int findLength(vector& A, vector& B) {
int m=A.size();
int n=B.size();
// vector > dp(A.size() + 1, vector(B.size() + 1, 0));
int dp[m+1][n+1]={};
cout<
int max=0;
for(int i=1;i<=m;i++)
{ for(int j=1;j<=n;j++)
{
if(A[i-1]==B[j-1])dp[i][j]=1+dp[i-1][j-1];
else dp[i][j]=0;
if(dp[i][j]>max)max=dp[i][j];
//cout<
}
//cout<
}
return max;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
비슷한 이름의 Attribute를 많이 만들어 삭제하는 Houdini사용 소프트웨어는 Houdini16.5입니다 배열에서는 애트리뷰트의 보간이 잘 동작하지 않는 것과 AttributeCreateSOP 노드에서 Size가 4를 넘는 애트리뷰트를 작성해도 값이 조작할 수 없어 의미가 없...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.