java基础试题4:笔试题2道

来源:互联网 发布:多益网络在哪里 编辑:程序博客网 时间:2024/06/05 02:39

题目
Problem Statement # 1
Given a set of N (> 1) positive integers, you are supposed to partition them into two disjoint sets A1 and A2 of n1 and n2 numbers, respectively. Let S1 and S2 denote the sums of all the numbers in A1 and A2, respectively. You are supposed to make the partition so that |n1 - n2| is minimized first, and then |S1 - S2| is maximized.
Input Specification:
Each input file contains one test case. For each case, the first line gives an integer N (2 <= N <= 10^5), and then N positive integers follow in the next line, separated by spaces. It is guaranteed that all the integers and their sum are less than 2^31.
Output Specification:
For each case, print in a line two numbers: |n1 - n2| and |S1 - S2|, separated by exactly one space.
示例输入1:
10
23 8 10 99 46 2333 46 1 666 555
示例输出1:
0 3611
示例输入2:
13
110 79 218 69 3721 100 29 135 2 6 13 5188 85
示例输出 2:
1 9359

Problem Statement # 2
You are to write a program that takes a list of strings containing integers and words and returns a sorted version of the list.
The goal is to sort this list in such a way that all words are in alphabetical order and all integers are in numerical order. Furthermore, if the nth element in the list is an integer it must remain an integer, and if it is a word it must remain a word.
Input Specification:
The input will contain a single, possibly empty, line containing a space-separated list of strings to be sorted. Words will not contain spaces, will contain only the lower-case letters a-z. Integers will be in the range -999999 to 999999, inclusive. The line will be at most 1000 characters long.
Output Specification:
The program must output the list of strings, sorted per the requirements above. Strings must be separated by a single space, with no leading space at the beginning of the line or trailing space at the end of the line.
示例输入1:
1
示例输出1:
1

示例输入2:
car truck bus
示例输出2:
bus car truck

示例输入3:
8 4 6 1 -2 9 5
示例输出3:

-2 1 4 5 6 8 9
示例输入4:
car truck 8 4 bus 6 1
示例输出4:
bus car 1 4 truck 6 8

    //先把输入的数组排序,把数组的后一半和减前一半和    public static void sort1() {        int temp;        int low;        int height;        int mid;        int s1 = 0;        int s2 = 0;        System.out.println("请输入数字个数");        Scanner scan = new Scanner(System.in);        int num = scan.nextInt();        int arr[] = new int[num];        for (int i = 0; i < arr.length; i++) {        arr[i] = scan.nextInt();        }        for (int i = 0; i < arr.length - 1; i++) {        temp = arr[i + 1];        low = 0;        height = i;        while (height >= low) {        mid = (low + height) / 2;        if (temp > arr[mid]) {        low = mid + 1;        } else {        height = mid - 1;        }        }        for (int j = i; j >= low; j--) {        arr[j + 1] = arr[j];        }        arr[low] = temp;        }        for (int i = 0; i < arr.length / 2; i++) {        s1 += arr[i];        }        for (int i = arr.length / 2; i < arr.length; i++) {        s2 += arr[i];        }        if (num % 2 == 0) {        if (s1 - s2 < 0) {        System.out.println("0 " + (s2 - s1));        }        } else {        if (s1 - s2 < 0) {        System.out.println("1 " + (s2 - s1));        }        }  }  //第二题        public static void sort2(String a) {        int s1 = 0;        int s2 = 0;        int k1 = 0;        int k2 = 0;        int j1 = 0;        int j2 = 0;        String array[] = a.split(" ");        for (int i = 0; i < array.length; i++) {        try {        if (Integer.parseInt(array[i]) % 1 == 0) {        s1++;        }        } catch (Exception e) {        s2++;        continue;        }        }        Integer b[] = new Integer[s1];        String c[] = new String[s2];        for (int i = 0; i < array.length; i = i + 1) {        try {        if (Integer.parseInt(array[i]) % 1 == 0) {        b[k1] = Integer.parseInt(array[i]);        k1++;        }        } catch (Exception e) {        c[k2] = array[i];        k2++;        continue;        }       }        Arrays.sort(b);        Arrays.sort(c);        for (int i = 0; i < array.length; i++) {        try {        if (Integer.parseInt(array[i]) % 1 == 0) {        array[i] = String.valueOf(b[j1]);        j1++;        }        } catch (Exception e) {        array[i] = String.valueOf(c[j2]);        j2++;        continue;        }   }        for (Object o : array) {        System.out.print(o + " ");        }     }     /**      * 第一题测试      */     @Test     public void test1(){        sort.sort1();        /*请输入数字个数        4        4 3 2 1        输出:0 4*/     }     /**      * 第二题测试用例      */     @Test     public void test2(){         sort.sort2("8 4 6 1 -2 9 5");//-2 1 4 5 6 8 9         sort.sort2("car truck 8 4 bus 6 1");//bus car 1 4 truck 6 8     }}
原创粉丝点击