渤海银行第二题 最长等比子序列
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; } }
#笔试题目##渤海银行#