洛谷 P1026 统计单词个数
来源:互联网 发布:头皮痒 知乎 编辑:程序博客网 时间:2024/06/05 18:11
题目描述
给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int p,k,n,len,w[205][205],f[205][205];char s[1005],ch[105][105];bool have(int x,int end){ for(int i=1;i<=n;i++) { char *p=strstr(s+x,ch[i]+1); if(p!=NULL&&p-&s[x]==0&&strlen(ch[i]+1)<=end-x+1) return 1; } return 0;}int main(){ scanf("%d%d",&p,&k); len=20*p; while(p--) { char tmp[25]; scanf("%s",tmp); strcat(s+1,tmp); } scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s",ch[i]+1); for(int i=len;i>=1;i--) for(int j=i;j>=1;j--) if(have(j,i)) w[j][i]=w[j+1][i]+1; else w[j][i]=w[j+1][i]; for(int i=1;i<=k;i++) f[i][i]=f[i-1][i-1]+w[i][i]; for(int i=1;i<=len;i++) f[i][1]=w[1][i]; for(int i=1;i<=len;i++) for(int j=1;j<=k&&j<i;j++) for(int r=j;r<i;r++) if(f[i][j]<f[r][j-1]+w[r+1][i]) f[i][j]=f[r][j-1]+w[r+1][i]; printf("%d\n",f[len][k]); return 0;}
0 0
- 洛谷P1026 统计单词个数
- 洛谷 P1026 统计单词个数
- 洛谷 P1026 统计单词个数
- 统计单词个数 洛谷p1026
- [P1026]统计单词个数
- 洛谷 P1026 [NOIP2001 T3] 统计单词个数
- 洛谷P1026&NOIP2001 统计单词个数
- 水——洛谷P1026 统计单词个数
- 洛谷1026 统计单词个数
- [洛谷luogu] [NOIP2001T3]统计单词个数 (DP)
- 【洛谷1026】【NOIP2001】统计单词个数
- vc 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- CSS设置子元素设置margin-top作用于父元素
- Tyvj P1077 CODE[VS] 2190 有理逼近
- 【基础4】WebDriver的部署
- Java之正则表达式入门理解
- Caused by: android.content.res.Resources$NotFoundExceptiton
- 洛谷 P1026 统计单词个数
- jsdom
- 智能小车-----寻迹的代码
- java8 新特性入门 stream/lambda
- Java字符串所占字节数的小总结
- C语言(19)-----二维数组
- unity学习笔记4
- 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数
- 48. 减少 DNS 查找(9)