TYVJ 1102 单词的划分 解题报告
这题和USACO里一题挺像的,具体那题是啥不记得了,反正暴力枚举就行,数据不大,代码如下:
#include <stdio.h> #include <string.h> #include <stdlib.h> #define INF 0xFFFFFFF #define min(a, b) ((a)<(b)?(a):(b)) int f[101]; char str[101]; char sub[100][101]; int main(int argc, char **argv) { int i, j, k; int n, l; scanf("%s\n", str); l = strlen(str); scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%s", sub[i]); } for(i = 1; i <= l; i++){ f[i] = INF; } f[0] = 0; for(i = 0; i < l; i++){ if(f[i] > 100){ continue; } for(j = 0; j < n; j++){ for(k = 0; sub[j][k] != '\0'; k++){ if(sub[j][k] != str[i + k]){ break; } } if(sub[j][k] == '\0'){ f[i + k] = min(f[i + k], f[i] + 1); } } } printf("%d\n", f[l]); return 0; }