如何解决最长递增子序列递归方法
以下是使用递归(不是 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 举报,一经查实,本站将立刻删除。