[luoguP1026] 统计单词个数(DP)
2024-08-24 10:08:41
#include <cstdio>
#include <cstring>
#define max(x, y) ((x) > (y) ? (x) : (y)) int p, k, w, n, m, num;
char s[2001], a[7][2001];
int f[2001][41], len[7], d[2001];
bool flag; int main()
{
scanf("%d %d", &p, &m);
for(int i = 1; i <= p; i++) scanf("%s", s + 20 * (i - 1) + 1);
n = strlen(s + 1);
scanf("%d", &num);
for(int i = 1; i <= num; i++)
{
scanf("%s", a[i] + 1);
len[i] = strlen(a[i] + 1);
}
memset(d, 127 / 3, sizeof(d));
for(int i = 1; i <= n; i++)
for(int j = 1; j <= num; j++)
{
if(i + len[j] - 1 > n || d[i] <= i + len[j] - 1) continue;
flag = 0;
for(int k = 1; k <= len[j]; k++)
if(s[i + k - 1] != a[j][k])
{
flag = 1;
break;
}
if(!flag) d[i] = i + len[j] - 1;
}
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
{
w = 0;
for(int k = i; k >= j; k--)
{
if(d[k] <= i) w++;
f[i][j] = max(f[i][j], f[k - 1][j - 1] + w);
}
}
printf("%d", f[n][m]);
return 0;
}
最新文章
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- Effiective C++ (一)
- excel笔记
- 【开发手记一】老生常谈:简简单单配置ZED板开发环境
- 解决浏览器兼容问题的css hack
- PAT (Advanced Level) 1011. World Cup Betting (20)
- 3.VBScript基础
- luoguP1379 八数码难题[启发式搜索]
- Java 编程思想 Chapter_14 类型信息
- javascript语法之循环语句
- Spring StringRedisTemplate 配置
- 【13】python time时间模块知识点备查
- 解决oracle语句中 含数字的字符串按数字排序问题
- CAP理论(摘)
- SQL查询优化的一些建议
- 【HNOI2013】游走
- Linux内核中container_of函数详解
- linux 监控CPU 内存情况
- Scratch GUI
- iOS侧滑返回到隐藏导航栏的VC,导航栏会闪现一次