2018春招鏈家筆試程式設計題題解
阿新 • • 發佈:2019-02-09
1.Light
在小紅家裡面,有n組開關,觸控每個開關,可以使得一組燈泡點亮。
現在問你,使用這n組開關,最多能夠使得多少個燈泡點亮呢?
輸入
第一行一個n,表示有n組開關。
接下來n行,每行第一個整數為k,表示這個開關控制k個燈泡,接下來k個整數,表示控制的燈泡序號。
滿足:
1<=n<=1000
1<=k<=1000
序號是在int範圍內正整數。
輸出
輸出最多多少個燈泡點亮。
這道題就是一個去重的問題,即多個開關可能按下都使同一個開關亮,那麼簡單方法就是使用HashSet去重。程式碼如下:
import java.util.HashSet; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub HashSet<Integer> hSet=new HashSet<>(); Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); for(int i=0;i<n;i++) { int k=scanner.nextInt(); for(int j=0;j<k;j++) { int value=scanner.nextInt(); hSet.add(value); } } System.out.println(hSet.size()); } }
2.Triangle
在迷迷糊糊的大草原上,小紅撿到了n根木棍,第i根木棍的長度為i,小紅現在很開心。
她想選出其中的三根木棍組成美麗的三角形。
但是小明想捉弄小紅,想去掉一些木棍,使得小紅任意選三根木棍都不能組成三角形。
請問小明最少去掉多少根木棍呢?
輸入
本題包含若干組測試資料。
對於每一組測試資料。
第一行一個n,表示木棍的數量。
滿足 1<=n<=100000
輸出
輸出最少數量
樣例輸入
4
樣例輸出
1
本題思路也很簡單,其實就是一個斐波那契數列的問題,因為有多組引數,所以先用打表法,先求出100000以內從1、2、3開始的斐波那契數列,然後進行根據輸入的n,查詢小於等於n的斐波那契數列元素有res個,最終輸出結果就是n-res。注意本題是多組輸入。
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); int h=2; ArrayList<Integer> arrayList=new ArrayList<>(); arrayList.add(1); while(h<=100000) { arrayList.add(h); int d=arrayList.size(); h=arrayList.get(d-1)+arrayList.get(d-2); } while(scanner.hasNext()) { int n=scanner.nextInt(); int ans=0; for(int i=0;i<n;i++) { if(arrayList.get(i)<=n) ans++; else break; } System.out.println(n-ans); } } }