两个串最长公共子序列的长度:

喜欢ヅ旅行 2022-06-05 07:58 217阅读 0赞
  1. public class Main {
  2. //求两个串最长公共子序列的长度
  3. //abcdef abc abd bdf
  4. public static int f(String s1,String s2){
  5. if(s1.length()==0||s2.length()==0){
  6. return 0;
  7. }
  8. /**
  9. * 主体部分
  10. */
  11. if(s1.charAt(0)==s2.charAt(0)){ //如果头相同
  12. return f(s1.substring(1),s2.substring(1))+1; //在交给下级的比较结果中加1
  13. }else{
  14. return Math.max(f(s1.substring(1),s2),f(s1,s2.substring(1))); //返回:max的选择执行,谁大执行谁
  15. //执行方式(降低规模!!!):谁大切谁,轮流切
  16. }
  17. }
  18. /**
  19. * 主体逻辑:
  20. * 1.比较第一个,相同就加1继续执行(过程)
  21. * 2.不同就去掉长的头元素,继续比较(变化)
  22. * 3.一直到有一方为0,返回0种情况(出口)
  23. * @param args
  24. */
  25. public static void main(String[] args) {
  26. int k=f("fabcdk","xbacd");
  27. System.out.println(k);
  28. }
  29. }

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读