天天看點

兩個串最長公共子序列的長度:

  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.  * 1.比較第一個,相同就加1繼續執行(過程) 
  20.  * 2.不同就去掉長的頭元素,繼續比較(變化) 
  21.  * 3.一直到有一方為0,傳回0種情況(出口) 
  22.  * @param args 
  23.  */  
  24. public static void main(String[] args) {  
  25. int k=f("fabcdk","xbacd");  
  26. System.out.println(k);            
  27. }  
  28.     }  

繼續閱讀