숫자nullRQNOJ-302- 단어 개수 집계 - 영역 dp
3606 단어 null
아이디어:
s[i][j]: i에서 j까지의 구간에 i로 끝낸 사전이 있으면 1이고, 그렇지 않으면 0이다.
sum[i][j]: i에서 j까지의 구간에 포용되는 사전의 수
if(s[i][j]==1)sum[i][j]=sum[i+1][j]+1;
else sun[i][j]=sum[i+1][j];
dp[i][j]: 0~j의 구간에서 i분을 분배하고 포함된 사전의 총계를 나타낸다.
dp[i][j]=dp[i-1][k]+sum[k+1][j](i-2<=k
매일 같은 이치
신념은 높고 큰 빌딩의 기둥이다. 신념이 없으면 그저 흩어진 벽돌과 기와일 뿐이다.신념은 도도한 강바닥으로 그것이 없으면 범람하는 파도만 있을 뿐이다.신념은 활활 타오르는 불길의 별이다. 신념이 없으면 차가운 나무 손잡이 하나만 있다.신념은 원양 기선의 본체이며, 신념이 없으면 마비된 거대만 남는다.
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<string>
#include<stdlib.h>
#define INF_MAX 0x7fffffff
#define INF 999999
#define max3(a,b,c) (max(a,b)>c?max(a,b):c)
#define min3(a,b,c) (min(a,b)<c?min(a,b):c)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
struct node
{
int u;
int v;
int w;
bool friend operator < (node a, node b){
return a.w < b.w;
}
}edge[1001];
int gcd(int n,int m){if(n<m) swap(n,m);return n%m==0?m:gcd(m,n%m);}
int lcm(int n,int m){if(n<m) swap(n,m);return n/gcd(n,m)*m;}
char dic[10][201];
char str[201];
char st[21];
int sum[201][201];
int s[201][201];
int p,k,ss;
int main()
{
int i,j,n;
scanf("%d%d%*c",&p,&k);
for(i=0;i<p;i++)
{
gets(st);
for(j=i*20;j<i*20+20;j++)
{
str[j]=st[j-i*20];
}
}
n=p*20;
scanf("%d%*c",&ss);
for(i=0;i<ss;i++)
{
gets(dic[i]);
}
int mi,is,ks;
for(i=0;i<n;i++)
{
mi=n;
for(j=0;j<ss;j++)
{
if(str[i]==dic[j][0])
{
for(ks=0;ks<strlen(dic[j])&&(i+ks)<n;ks++)
{
if(str[ks+i]!=dic[j][ks])break;
}
if(ks==strlen(dic[j]))mi=min(mi,i+ks-1);
}
}
for(is=mi;is<n;is++)
{
s[i][is]=1;
}
}
for(i=0;i<n;i++)
sum[n-1][i]=s[n-1][i];
for(i=n-2;i>=0;i--)
{
for(j=i;j<n;j++)
{
if(s[i][j]==1)sum[i][j]=sum[i+1][j]+1;
else sum[i][j]=sum[i+1][j];
}
}
int dp[10][201];
/* for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%2d ",sum[i][j]);
}
puts("");
}*/
for(i=0;i<n;i++)
{
dp[1][i]=sum[0][i];
}
for(i=2;i<=k;i++)
{
for(j=0;j<n;j++)
{
dp[i][j]=0;
for(ks=i-2;ks<j;ks++)
{
dp[i][j]=max(dp[i][j],dp[i-1][ks]+sum[ks+1][j]);
}
}
}
cout<<dp[k][n-1]<<endl;
return 0;
}
글이 끝나면 프로그래머의 우스갯소리 어록을 공유해 드리겠습니다. 합격한 프로그래머는'지구 파괴'와 같은 프로그램을 쓰지 않습니다. 그들은 함수를'행성 파괴'라고 써서 지구를 하나의 매개 변수로 전달합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
언제가 아닌가프로그래밍 언어에서 null 참조가 수십억 달러의 실수라는 말을 이미 들었을 것입니다. Java의 유명하고 두려운 NullPointerException은 여러분이 알고 있거나 C의 분할 오류일 수 있습니다. 모든 상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.