2019好未來筆試題總結


1.一個數分成幾份,可以被 3 整除的最大份數。比如 12345 分成12 3 45 結果為3.

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String s = scan.next(); char[] str = s.toCharArray(); int[] arr = new int[str.length]; int res=0; int sum=0; for(int i=0; i<arr.length; i++){ arr[i] = str[i]-'0'; } for(int i=0; i<arr.length; i++){ sum += arr[i]; if(arr[i]%3 == 0){ res++; sum = 0; continue; } if(sum%3 == 0){ res++; sum = 0; } } System.out.println(res); } }

 

2.根據x + y = x|y,給定x, 求滿足要求的第 k 個 y

 

3.給定數組[0-9] 和 boll_array[0111011110], 0表示可以輸出,也可以不輸出, 1必須輸出對應位,輸出所有可能情況(按字符串升序)

 

4.n 面篩子,m面有獎,有獎繼續擲篩子,沒獎結束。輸入給定每面分數的數組 s, len(s) = n, 求期望。
數學題, ave_score = sum(s)/n
e = (n-m)/n avg_score (第一次就沒獎)+ m/n (avg_score + e) (第一次有獎,相當於從頭開始)
化簡得到 e = sum(s_array)/n-m

 

5、

/**
 * 求上升子序列和的最大值
 */
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] a = {3,7,1,5,9,4,8};
        int n = 7;
        int[] sum = new int[n];
        for(int i=0;i<n;i++){
            sum[i]=a[i];
            for(int j=0;j<i;j++){
                if (a[j]<a[i]) 
                	sum[i]=Math.max(sum[i],sum[j]+a[i]);
            }
        }
        int max_sum=sum[0];
        for(int i=1;i<n;i++){
            if(sum[i]>max_sum) max_sum=sum[i];
        }
        System.out.println(max_sum);
    }
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM