版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carson0408/article/details/79857372
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);
}
}
}