Light
題目描述
在小紅家里面,有n組開關,觸摸每個開關,可以使得一組燈泡點亮。現在問你,使用這n組開關,最多能夠使得多少個燈泡點亮呢?
輸入
第一行一個n,表示有n組開關。接下來n行,每行第一個整數為k,表示這個開關控制k個燈泡,接下來k個整數,表示控制的燈泡序號。
滿足:1<=n<=1000 、1<=k<=1000 、序號是在int范圍內正整數。
輸出
輸出最多多少個燈泡點亮。
樣例輸入
3
1 1
1 2
2 1 2
樣例輸出
2
思路
這道題是一個去重的問題,即多個開關可能按下都使同一個開關亮,那么可以利用HashSet去重。
代碼實現
package lianjia.demo1;
import java.util.HashSet;
import java.util.Scanner;
/**
* 題目描述:
* 在小紅家里面,有n組開關,觸摸每個開關,可以使得一組燈泡點亮。
* 現在問你,使用這n組開關,最多能夠使得多少個燈泡點亮呢?
* 輸入
* 第一行一個n,表示有n組開關。
* 接下來n行,每行第一個整數為k,表示這個開關控制k個燈泡,接下來k個整數,表示控制的燈泡序號。
* 滿足:
* 1<=n<=1000
* 1<=k<=1000
* 序號是在int范圍內正整數。
* 輸出
* 輸出最多多少個燈泡點亮。
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k;
int x;
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < n; i++) {
k = sc.nextInt();
for (int j = 0; j < k; j++) {
x = sc.nextInt();
set.add(x);
}
}
System.out.println(set.size());
}
}
triangle
題目描述
在迷迷糊糊的大草原上,小紅撿到了n根木棍,第i根木棍的長度為i,小紅現在很開心。她想選出其中的三根木棍組成美麗的三角形。但是小明想捉弄小紅,想去掉一些木棍,使得小紅任意選三根木棍都不能組成三角形。請問小明最少去掉多少根木棍呢?
輸入
本題包含若干組測試數據。對於每一組測試數據。第一行一個n,表示木棍的數量。滿足 1<=n<=100000
輸出
輸出最少數量
樣例輸入
4
樣例輸出
1
思路
如果兩邊和大於第三邊,那么要去掉的木棍數加1,否則都加1,繼續判斷
代碼實現
package lianjia.demo2;
import java.util.Scanner;
/**
* 題目描述:
* 在迷迷糊糊的大草原上,小紅撿到了n根木棍,第i根木棍的長度為i,小紅現在很開心。
* 她想選出其中的三根木棍組成美麗的三角形。
* 但是小明想捉弄小紅,想去掉一些木棍,使得小紅任意選三根木棍都不能組成三角形。
* 請問小明最少去掉多少根木棍呢?
* 輸入
* 本題包含若干組測試數據。
* 對於每一組測試數據。
* 第一行一個n,表示木棍的數量。
* 滿足 1<=n<=100000
* 輸出
* 輸出最少數量
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i, n;
int count = 0;
int a = 2;
int b = 3;
while (sc.hasNext()) {
n = sc.nextInt();
for (i = 4; i <= n; i++) {
if (a + b > i) {
count++;
} else {
a = b;
b = i;
}
}
System.out.println(count);
count = 0;
a = 2;
b = 3;
}
}
}