渤海银行第二题 最长等比子序列
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class Main10 {
static int res=0;
static ArrayList<ArrayList<Integer>>list;
public static void main(String[] args) {
int[]nums={1 ,3 ,2 ,5 ,4 ,2 ,8 ,6 ,16 ,9};
//找出所有的子序列 然后判断是不是等比
list=new ArrayList<>();
ArrayList<Integer>temp=new ArrayList<>();
dfs(nums,-1,temp);
// for(ArrayList<Integer> line:list) {
// for (int i : line)
// System.out.print(i + " ");
// System.out.println();
// }
System.out.println(res);
}
public static void dfs(int []nums,int curi,ArrayList<Integer>temp){
list.add(new ArrayList(temp));
if(isDB(temp)&&temp.size()>res){
res=temp.size();
}
if(!isDB(temp)) return;
for(int i=curi+1;i<nums.length;i++){
temp.add(nums[i]);
dfs(nums,i,temp);
temp.remove(temp.size()-1);
}
}
public static boolean isDB(ArrayList<Integer> nums){
if(nums.size()==1||nums.size()==0) return true;
int k=nums.get(1)/nums.get(0);
for(int i=0;i<nums.size()-1;i++){
if(nums.get(i+1)/nums.get(i)!=k) return false;
}
return true;
}
}
#笔试题目##渤海银行#
快手公司福利 1244人发布