最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

南京信息工程大学 算法设计与分析 实验

来源:动视网 责编:小OO 时间:2025-09-24 15:03:22
文档

南京信息工程大学 算法设计与分析 实验

南京信息工程大学算法设计与分析实验(实习)报告实验(实习)名称最长公共子序列实验(实习)日期6.10得分指导老师系计软专业软件工程班级3姓名学号一、实验目的:(1)能够熟悉最长公共子序列问题这个算法(2)掌握并应用动态规划算法解决最长公共子序列问题二、实验内容使用动态规划解决最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。三、实验步骤源代码:importjava.io.*;importjava.util.ArrayList
推荐度:
导读南京信息工程大学算法设计与分析实验(实习)报告实验(实习)名称最长公共子序列实验(实习)日期6.10得分指导老师系计软专业软件工程班级3姓名学号一、实验目的:(1)能够熟悉最长公共子序列问题这个算法(2)掌握并应用动态规划算法解决最长公共子序列问题二、实验内容使用动态规划解决最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。三、实验步骤源代码:importjava.io.*;importjava.util.ArrayList
南京信息工程大学 算法设计与分析 实验(实习)报告

实验(实习)名称 最长公共子序列   实验(实习)日期       6.10       得分        指导老师    

系   计软  专业   软件工程         班级   3     姓名           学号  

一、实验目的:

(1)能够熟悉最长公共子序列问题这个算法

(2)掌握并应用动态规划算法解决最长公共子序列问题

二、实验内容 

使用动态规划解决最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。

三、实验步骤

源代码:

import java.io.*;

import java.util.ArrayList;

import java.util.List;

public class xd {

    public static List re=new ArrayList();

    static int m,n;

    static int c[][];

    static char b[][];

    public xd(){    

    String in;

    char x[],y[];

    BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

     do{

         try{

             do{

                 System.out.println("请输入第一个字符串:");

                 in=buf.readLine().trim();

             }while(in.equals(""));

             in="S"+in;

             x=in.toCharArray();

             do{

                 System.out.println("请输入第二个字符串:");

                 in=buf.readLine().trim();

             }while(in.equals(""));

             in="S"+in;

             y=in.toCharArray();

             char b[][]=new char[x.length][y.length];

             int c[][]=new int[x.length][y.length];

             int len=lcsLength(x,y,b,c);//计算最长公共子序列的长度

             System.out.println("最长公共子序列的长度为:"+len);

             if(len==0){System.out.println("没有公共子序列!");return;}

             else{

             lcsPut(x.length-1,y.length-1,x,b);

             int size=re.size();

             System.out.print("最长公共子序列为:");

             for(int i=0;i                 System.out.print(re.get(i));

             }

             System.out.print("\\n");}

      }catch(IOException e){

           e.printStackTrace();

      }

    }while(true);

     

}

    //求长度的方法

    public   int  lcsLength(char x[],char y[],char b[][],int c[][]){

         m=x.length-1;

         n=y.length-1;

        re.clear();for(int j=0;j<=n;j++) {c[0][j]=0;b[0][j]='→';System.out.print(c[0][j]);}System.out.print("\\n");

        for(int i=0;i<=m;i++) {c[i][0]=0;b[i][0]='→';}

        

        for(int i=1;i<=m;i++){

            System.out.print(0);

            for( int j=1;j<=n;j++){

                if (x[i]==y[j]){

                    c[i][j]=c[i-1][j-1]+1;

                    b[i][j]='↘';

                    

                }

                else if (c[i-1][j]>=c[i][j-1]){

                    c[i][j]=c[i-1][j];

                    b[i][j]='↓';

                }

                else{

                    c[i][j]=c[i][j-1];

                    b[i][j]='→';

                }

                System.out.print(c[i][j]);

                

            }System.out.print("\\n");

        }

        for(int i=0;i<=m;i++){

            for(int j=0;j<=n;j++){

                System.out.print(b[i][j]);

            }

            System.out.print("\\n");

         }

            return c[m][n];

        }

    //求公共子序列

    public static void lcsPut(int i,int j,char x[],char b[][]){

        if (i==0 || j==0)

        return;

        if (b[i][j]=='↘'){

            lcsPut(i-1,j-1,x,b);

            re.add(x[i]);

        }

        else if(b[i][j]=='↓') lcsPut(i-1,j,x,b);

              

            else lcsPut(i,j-1,x,b);

    }

//主方法

    public static void main(String args[]){

        jsc xd=new xd();

    

   }

}

四、实验截图

文档

南京信息工程大学 算法设计与分析 实验

南京信息工程大学算法设计与分析实验(实习)报告实验(实习)名称最长公共子序列实验(实习)日期6.10得分指导老师系计软专业软件工程班级3姓名学号一、实验目的:(1)能够熟悉最长公共子序列问题这个算法(2)掌握并应用动态规划算法解决最长公共子序列问题二、实验内容使用动态规划解决最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。三、实验步骤源代码:importjava.io.*;importjava.util.ArrayList
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top