1. 程式人生 > >2018春招鏈家筆試程式設計題題解

2018春招鏈家筆試程式設計題題解

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);
		}

	}

}