[codevs2980] 모자 사기 동태 기획
A , n (1<=n<=100), , len (1<=len<=500)。 。 , k ( ) A 。
, character (k=5) pollution (k=4) ,apple (k=2) pear (k=1) 。
n , (k )。
설명 입력 Input Description
입력 데이터의 첫 번째 줄은 문자열이 있음을 나타내는 n 줄만 있습니다.
다음은 n줄이 있고 줄마다 문자열이 있습니다.
출력 설명 Output Description
출력에는 n줄이 있고 줄마다 문자열이 있으며 대칭 계수에 따라 크고 작은 순서로 정렬된 문자열을 표시하며 대칭 계수와 동시에 사전 순서대로 정렬됩니다.
샘플 Sample Input 입력
5
pineapple
banana
peach
coconut
character
샘플 출력 Sample Output
banana
character
pineapple
coconut
peach
데이터 범위 및 프롬프트 Data Size & Hint
데이터 범위:
1<=n<=100
1<=len<=500
1<=k<=len
팁:
대칭 계수 k는 가장 긴 대칭 서열의 길이를 가리키며 가장 긴 대칭 서열의 길이가 아니다.
문자열의 가장 긴 대칭 서열은 문자열과 반열되는 가장 긴 공공 서열이며, 문자열마다 폭력적으로 계산하면 된다.
코드:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[2333][2333];
struct str{
string s;
int len;
}l[2333];
bool cmp(str a,str b)
{
if(a.len!=b.len) return a.len>b.len;
return a.s<b.s;
}
int main()
{
int n;
scanf("%d",&n);
for(int k=1;k<=n;k++)
{
cin>>l[k].s;
string ss;
memset(dp,0,sizeof(dp));
int len=l[k].s.length();
for(int i=len-1;i>=0;i--) ss+=l[k].s[i];
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
{
if(l[k].s[i]==ss[j])
dp[i+1][j+1]=max(dp[i][j]+1,max(dp[i+1][j],dp[i][j+1]));
else
dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
}
}
l[k].len=dp[len][len];
// cout<<l[k].len<<endl;
}
sort(l+1,l+1+n,cmp);
for(int i=1;i<=n;i++)
{
cout<<l[i].s<<endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.