动态规划---最长的公共子序列java版本

package com.duoduo.test1;
/**
	 * 给定两个序列X={ x1,x2,.....xm}  Y={y1,y2///yn} 找出两者的一个最长的公共子序列z
	 * 采用动态规划的思想
	 *  1 分析最优解的结构特征 假设已经知道了最优解
	 *  2 建立最优解的递归式  
	 *  3 自底向上求解最优值 并记录最优值和最优策略
	 *  4 构造最优解
	 *  
	 *  算法设计: 确定合适的数据结构---》初始化--》循环得到最长长度--》递推来源得到最优解
	 */
import java.util.Scanner;
public class Test4_2 {
	//已知两个字符串  求解公共最长子序列
	static String s1;
	static String s2;
	
	public static void main(String [] args) {
		Scanner sc=new Scanner(System.in);
		System.out.print("输入第一个字符串S1:");
	    s1= sc.next();
		System.out.print("输入第二个字符串S2:");
		s2=sc.next();
		
		int len1=s1.length();                //计算两个字符串的长度
		int len2=s2.length();
		
		int [][] c=new int[len1+1][len2+1];  //记录最长公共子序列长度 
		int [][] b=new int[len1+1][len2+1];  //记录最长子序列的来源
		
		/*初始化    第一行第一列均初始化为0*/
		for(int i=0;i<=len1;i++)
			c[i][0]=0;
		for(int j=0;j<=len2;j+
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值