刷算法第四天——P1046 陶陶摘苹果+P1047 校门外的树+ P1427 小鱼的数字游戏+P2141 珠心算测验

P1046 陶陶摘苹果

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] apples = new int[10];
        for (int i = 0; i < 10; i++) {
            apples[i] = scanner.nextInt();
        }
        int r = scanner.nextInt();
        Arrays.sort(apples);
        int count = 0;
        for (int i = 0; i < 10; i++)
            if (r+30 < apples[i]) {
                count = i;
                break;
            }
        System.out.print(count);
        scanner.close();
    }
}

注:解决方案:在next()、nextInt()和nextFloat() 之后加入nextLine() 方法,从而使其屏蔽掉由于’\n’导致的异常。
使用nextLine()进行读取,然后进行强制类型转换。
解决方法



P1047 校门外的树


// import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = 0, b = 0, count = 0;
        a = scanner.nextInt();
        b = scanner.nextInt();
        int[] tree = new int[a + 1];
        for (int i = 0; i < b; i++) {
            int c = scanner.nextInt();
            int d = scanner.nextInt();
            for (int j = c; j <= d; j++) {
                tree[j] = 1;
            }
        }
        for (int i = 0; i < a + 1; i++) {
            if (tree[i] == 0)
                count++;
        }
        System.out.print(count);
        scanner.close();
    }
}

注:读题,数组长度要+1




P1427 小鱼的数字游戏


// import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = 0, i = 0;
        int[] arr = new int[100];
        for (; i < 100; i++) {
            a = scanner.nextInt();
            if (a == 0)
                break;
            else {
                arr[i] = a;
            }
        }
        i--;
        for (; i >=0 ; i--)
        System.out.print(arr[i]+" ");
        scanner.close();
    }
}



P2141 珠心算测验

import java.util.Arrays;
import java.util.Scanner;
/*
4
1 2 3 4
5 
2 3 4 5 6
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = 0, l = 0, r = 0, count = 0;
        a = scanner.nextInt();
        int[] arr = new int[a];
        for (int i = 0; i < a; i++) {
            arr[i] = scanner.nextInt();
        }
       Arrays.sort(arr); //从小到大排序
        for (int i = a - 1; i > 0; i--) {
            r = i - 1;
            l = 0;
            while (l < r) {
                if (arr[l] + arr[r] == arr[i]) {
                    count++;
                    break;
                } else if (arr[l] + arr[r] < arr[i])
                    l++;
                else
                    r--;
            }
        }
        System.out.print(count);
        scanner.close();
    }
}

你可能感兴趣的:(算法笔记,算法,java)