问题描述
以下是使用递归(不是 dp)的最长递增子序列问题的两种解决方案。 第一个解决方案给了我正确的答案,但第二个解决方案不起作用。 我对这种方法有两个问题:
public class LongestIncreasingSubsequence {
public static void main(String[] args) {
LongestIncreasingSubsequence obj1=new LongestIncreasingSubsequence();
int[] arr= {7,6,3,1,5,8,4,9};
System.out.println(obj1.countLIS(arr,-1));
}
public int countLIS(int[] arr,int curr,int prev) {
if(curr==arr.length)
return 0;
int result1=0;
if(prev==-1 || arr[curr]>arr[prev])
result1=1 + countLIS(arr,curr+1,curr);
int result2=countLIS(arr,prev);
return Math.max(result1,result2);
}
}
第二种解决方案
注意:下面的代码中只改变了 result1 的范围,结果是错误的答案。
public class LongestIncreasingSubsequence {
public static void main(String[] args) {
LongestIncreasingSubsequence obj1=new LongestIncreasingSubsequence();
int[] arr= {7,-1));
}
int result1=0;
public int countLIS(int[] arr,int prev) {
if(curr==arr.length)
return 0;
if(prev==-1 || arr[curr]>arr[prev])
result1=1 + countLIS(arr,result2);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)