动态规划(LCS)(POJ 2250 Compromise)
来源:互联网 发布:大数据时代知乎 编辑:程序博客网 时间:2024/04/29 02:29
输入两句话,求最大子序列
package D3_12;import java.util.Scanner;public class ZiXuLie {static String[] sen1;static String[] sen2;static int[][] p;static StringBuilder result;public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {// 注意多组输入result = new StringBuilder();// ------------------输入并分割语句---------------------StringBuilder sb = new StringBuilder();String str;String tmp;while (true) {tmp = sc.nextLine();if (tmp.endsWith("#")) {tmp = tmp.substring(0, tmp.length() - 1);sb.append(tmp);break;}sb.append(tmp + "\n");}str = sb.toString();sen1 = str.split("\\s+|\\n");sb = new StringBuilder();while (true) {tmp = sc.nextLine();if (tmp.endsWith("#")) {tmp = tmp.substring(0, tmp.length() - 1);sb.append(tmp);break;}sb.append(tmp + "\n");}str = sb.toString();sen2 = str.split("\\s+|\\n");// -----------------------------------------------------------int[][] c = new int[sen1.length + 2][sen2.length + 2];// 图形记录p = new int[sen1.length + 2][sen2.length + 2];// 记录行走方向for (int i = 1; i <= sen1.length; i++) {for (int j = 1; j <= sen2.length; j++) {if (sen1[i - 1].equals(sen2[j - 1])) {c[i][j] = c[i - 1][j - 1] + 1;p[i][j] = 1;} else if (c[i - 1][j] >= c[i][j - 1]) {// 单词不同的话舍掉哪个都一样(向下走或者向右走,这里默认向下走)p[i][j] = 2;c[i][j] = c[i - 1][j];} else {p[i][j] = 3;c[i][j] = c[i][j - 1];}}}print(sen1.length, sen2.length);System.out.println(result.substring(0, result.length() - 1));}}// 递归打印static void print(int i, int j) {if (i == 0 || j == 0)return;if (p[i][j] == 1) {print(i - 1, j - 1);result.append(sen1[i - 1] + " ");} else if (p[i][j] == 2) {print(i - 1, j);} else if (p[i][j] == 3) {print(i, j - 1);}}}
0 0
- 动态规划(LCS)(POJ 2250 Compromise)
- POJ 2250 Compromise 最长公共子序列LCS 动态规划DP
- POJ 2250 Compromise(LCS问题)
- poj 2250 Compromise (LCS)
- poj 2250 Compromise(LCS)
- POJ 2250--Compromise(LCS以及路径记录)
- poj 2250 Compromise dp lcs 路径输出
- poj 2250 Compromise(裸LCS DP)
- poj-2250Compromise(LCS+标记数组)
- Poj 2250 Compromise【LCS+路径输出】
- poj 2250 Compromise 记录路径的lcs
- poj 1015 Jury Compromise 动态规划
- POJ 1015-Jury Compromise动态规划
- poj 1015 Jury Compromise 动态规划
- pku 2250 Compromise(LCS)
- [动态规划]UVA531 - Compromise
- poj 2250 Compromise(LCS,最长公共子序列)
- poj 2250 Compromise (DP-LCS 记录路径)
- 1056这道题不能做
- 一个使用纯Win32 SDK和C语言实现的五子棋游戏
- 创建型模式-生成器(builder)
- leetcode_14. Longest Common Prefix
- Android应用层View绘制流程与源码分析
- 动态规划(LCS)(POJ 2250 Compromise)
- 字符串统计
- Python 网络编程/(有连接)
- 数值统计
- 如何转载CSDN上的博文
- Exchange Web Service(EWS) 协议同步邮件
- 希尔排序
- 求奇数的乘积
- 冒泡排序