POJ 3267 java实现

来源:互联网 发布:手机淘宝秒杀的技巧 编辑:程序博客网 时间:2024/05/18 04:52

 POJ 3267 java实现

import java.util.Scanner;public class Main3267 {//poj3267static int W, L;static char[] message;static int[] dp;static int Min(int a, int b) {if (a > b) {return b;} else {return a;}}public static void main(String[] args) throws Exception {System.setIn(new java.io.FileInputStream("2.txt"));Scanner sc = new Scanner(System.in);while (sc.hasNext()) {W = sc.nextInt();L = sc.nextInt();message = sc.next().toCharArray();char[][] dic = new char[W][25];for (int i = 0; i < dic.length; i++) {dic[i] = sc.next().toCharArray();}dp = new int[301];dp[L] = 0; // 初始化为0int pivot, index; // 迭代器for (int i = L - 1; i >= 0; i--) {dp[i] = dp[i + 1] + 1; // 状态1for (int j = 0; j < W; j++) { // 枚举每个单词,查看是否匹配pivot = i;index = 0;int len = dic[j].length;while (pivot < L) { // 此时匹配失败if (message[pivot] == dic[j][index]) // 若相等则迭代器均增加{pivot++;index++;} else// 否则只增加message迭代器pivot++;if (index == len) { // 匹配成功dp[i] = Min(dp[i], dp[pivot] + pivot - i - index); // 状态2break;}}}}}System.out.println(dp[0]); // 输出结果}}

原创粉丝点击